注:本篇博客的所有測試環境均爲Ubuntu16.04之下,本篇博客總結自Redis教程。
數據庫的安裝與配置
Ubuntu下安裝
- $sudo apt-get update
- $sudo apt-get install redis-server
服務端啓動命令
redis-server
客戶端啓動命令
redis-cli
啓動成功之後會出現:
redis 127.0.0.1:6379>
在終端上輸入ping命令,如果出現pong則說明安裝成功。
設置redis數據庫可遠程登錄並設置登錄密碼
使用root權限修改/etc/redis/redis.conf文件:
想使用哪個密碼進行登錄就直接修改“password”這個字符串就行,如圖我現在的密碼是password。
設置允許遠程登錄:
將bind 127.0.0.1那一行進行註釋。
修改完之後將redis服務進行重啓:
sudo /etc/init.d/redis-server restart
修改完成之後我們的登錄方式變爲:
redis-cli -h 127.0.0.1 -p 6379(默認端口) -a password
redis的常用命令彙總
我將從redis數據庫能夠存儲的數據結構的類型進行一個個的彙總(只是博主認爲較常用的,詳細的大家可以查閱官方文檔或百度)
獲取數據庫所有鍵
使用 KEYS 命令:KEYS pattern
,例如:redis> keys *
列出所有 key。
鍵
redis 127.0.0.1:6379> SET name redis
OK
redis 127.0.0.1:6379> DEL name
(integer) 1
DEL 是一個命令,name 是一個鍵。 如果鍵被刪除成功,命令執行後輸出 (integer) 1,否則將輸出 (integer) 0。
- EXISTS key
檢查給定 key 是否存在。- KEYS pattern
查找所有符合給定模式( pattern)的 key 。- RENAME key newkey
修改 key 的名稱- TYPE key
返回 key 所儲存的值的類型。
字符串
redis 127.0.0.1:6379> SET name redis
OK
redis 127.0.0.1:6379> GET name
“redis”
我們使用了 SET 和 GET 命令,鍵爲name。
- MGET key1 [key2…]
獲取所有(一個或多個)給定 key 的值。- STRLEN key
返回 key 所儲存的字符串值的長度。- MSET key value [key value …]
同時設置一個或多個 key-value 對。- INCR key
將 key 中儲存的數字值增一。- INCRBY key increment
將 key 所儲存的值加上給定的增量值(increment) 。- DECR key
將 key 中儲存的數字值減一。- DECRBY key decrement
key 所儲存的值減去給定的減量值(decrement) 。- APPEND key value
如果 key 已經存在並且是一個字符串, APPEND 命令將 value 追加到 key 原來的值的末尾。
哈希(Hash)
Redis hash 是一個string類型的field和value的映射表。Redis 中每個 hash 可以存儲40多億鍵值對。
127.0.0.1:6379> HMSET redis name “redis tutorial” description “redis basic commands for caching” likes 20 visitors 23000
OK
127.0.0.1:6379> HGETALL redis
- “name”
- “redis tutorial”
- “description”
- “redis basic commands for caching”
- “likes”
- “20”
- “visitors”
- “23000”
我們設置了 redis 的一些描述信息(name, description, likes, visitors) 到哈希表的 redis 中。
- HDEL 表名 key[key2]
刪除一個或多個哈希表字段。- HEXISTS 表名 key
查看哈希表中指定的字段是否存在。- HGETALL 表名
獲取指定哈希表所有字段和值。- HINCRBY 表名 key increment
爲哈希表的指定字段的整數值加上增量 increment 。- HKEYS 表名
獲取哈希表中的所有字段。- HMGET 表名 key [key2]
獲取所有給定字段的值。- HMSET 表名 key1 value1 [key2 value2 ]
同時將多個 key-value (鍵-值)對設置到哈希表中。- HSET 表名 key value
將哈希表中的字段 key 的值設爲 value 。- HVALS 表名
獲取哈希表中所有值。
列表(List)
Redis列表是簡單的字符串列表,按照插入順序排序。你可以添加一個元素到列表的頭部或者尾部,一個列表最多可以包含40億多個元素。
redis 127.0.0.1:6379> LPUSH redis redis
(integer) 1
redis 127.0.0.1:6379> LPUSH redis mongodb
(integer) 2
redis 127.0.0.1:6379> LPUSH redis mysql
(integer) 3
redis 127.0.0.1:6379> LRANGE redis 0 10
- “mysql”
- “mongodb”
- “redis”
在以上實例中我們使用了 LPUSH 將三個值插入了名爲 redis 的列表當中。
- BLPOP key1 [key2 ] timeout
移出並獲取列表的第一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。- BRPOP key1 [key2 ] timeout
移出並獲取列表的最後一個元素, 如果列表沒有元素會阻塞列表直到等待超時或發現可彈出元素爲止。- LINDEX key index
通過索引獲取列表中的元素。- LLEN key
獲取列表長度。- LPOP key
移出並獲取列表的第一個元素。- LPUSH key value1 [value2]
將一個或多個值插入到列表頭部。- LRANGE key start stop
獲取列表指定範圍內的元素(如上面的例子)。- LSET key index value
通過索引設置列表元素的值。- LTRIM key start stop
對一個列表進行修剪(trim),就是說,讓列表只保留指定區間內的元素,不在指定區間之內的元素都將被刪除。- RPOP key
移除並獲取列表最後一個元素。- RPUSH key value1 [value2]
在列表尾部中添加一個或多個值。
集合(Set)
集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。Set是String類型的無序集合。集合成員是唯一的。
redis 127.0.0.1:6379> SADD redis redis
(integer) 1
redis 127.0.0.1:6379> SADD redis mongodb
(integer) 1
redis 127.0.0.1:6379> SADD redis mysql
(integer) 1
redis 127.0.0.1:6379> SADD redis mysql
(integer) 0
redis 127.0.0.1:6379> SMEMBERS redis
- “mysql”
- “mongodb”
- “redis”
我們通過 SADD 命令向名爲 redis 的集合插入的三個元素。
- SADD key member1 [member2]
向集合添加一個或多個成員- SCARD key
獲取集合的成員數- SISMEMBER key member
判斷 member 元素是否是集合 key 的成員- SMEMBERS key
返回集合中的所有成員- SMOVE source destination member
將 member 元素從 source 集合移動到 destination 集合- SREM key member1 [member2]
移除集合中一個或多個成員- SUNIONSTORE destination key1 [key2]
所有給定集合的並集存儲在 destination 集合中
有序集合(sorted set)
Redis 有序集合和集合一樣也是string類型元素的集合,且不允許重複的成員。
不同的是每個元素都會關聯一個double類型的分數。redis正是通過分數來爲集合中的成員進行從小到大的排序。
有序集合的成員是唯一的,但分數(score)卻可以重複。
集合是通過哈希表實現的,所以添加,刪除,查找的複雜度都是O(1)。
redis 127.0.0.1:6379> ZADD redis 1 redis
(integer) 1
redis 127.0.0.1:6379> ZADD redis 2 mongodb
(integer) 1
redis 127.0.0.1:6379> ZADD redis 3 mysql
(integer) 1
redis 127.0.0.1:6379> ZADD redis 3 mysql
(integer) 0
redis 127.0.0.1:6379> ZADD redis 4 mysql
(integer) 0
redis 127.0.0.1:6379> ZRANGE redis 0 10 WITHSCORES
- “redis”
- “1”
- “mongodb”
- “2”
- “mysql”
- “4”
我們通過命令 ZADD 向 redis 的有序集合中添加了三個值並關聯上分數。
- ZADD key score1 member1 [score2 member2]
向有序集合添加一個或多個成員,或者更新已存在成員的分數。- ZCARD key
獲取有序集合的成員數。- ZCOUNT key min max
計算在有序集合中指定區間分數的成員數。- ZINCRBY key increment member
有序集合中對指定成員的分數加上增量 increment。- ZRANK key member
返回有序集合中指定成員的索引。- ZREM key member [member …]
移除有序集合中的一個或多個成員返回有序集合中指定成員的索引。- ZUNIONSTORE destination numkeys key [key …]
計算給定的一個或多個有序集的並集,並存儲在新的 key 中。