目錄
1 string ? ?
2 hash
3 list
4 set集合
5 zset有序集合
1 string ? ?
值可以是字符串、數字和二進制的value,值最大不能超過512MB
應用場景:
應用程序緩存
計數器
web共享session
限速
1.1 設置單個鍵值
set <key> value [EX seconds|PX milliseconds] [nx|xx]
ex seconds 為鍵值設置秒級過期時間
px milliseconds 為鍵值設置毫秒級過期時間
nx 鍵必須補存在,才可以設置成功,用于添加
xx 與nx相反,鍵必須存在,才可以設置成功,用于更新
示例:
設置key1值為value1,過期時間60秒,鍵存在才更新
127.0.0.1:6379>set key1 value1 ex 60 ?xx?
1.2 獲取值
get key
示例:
127.0.0.1:6379> get key1
"value1"
1.3 計數
incr key,
值為整數返回自增后的結果
值不是整數返回錯誤
鍵不存在按照值為0自增返回結果1
其他命令:decr(自減),incrby(自增指定數字),decrby(自減指定數字)
示例:
127.0.0.1:6379> set counter 1
OK
127.0.0.1:6379> get counter
"1"
127.0.0.1:6379> incr counter
(integer) 2
127.0.0.1:6379> get counter
"2"
127.0.0.1:6379> decr counter
(integer) 1
127.0.0.1:6379> get counter
"1"
127.0.0.1:6379> incrby counter 10
(integer) 11
127.0.0.1:6379> get counter
"11"
127.0.0.1:6379> decrby counter 3
(integer) 8
127.0.0.1:6379> get counter
"8"
1.4 追加值
append <key> value ? ?#追加到原值的末尾
實例:
127.0.0.1:6379> get key2
"value2"
127.0.0.1:6379> append key2 "-key2"
(integer) 11
127.0.0.1:6379> get key2
"value2-key2"
1.5字符串長度
strlen <key> #獲取值的長度
實例:
127.0.0.1:6379> strlen key2
(integer) 11
1.6 獲取部分字符串
getrange <key> start end
實例:
127.0.0.1:6379> getrange key2 1 2
"al"
1.7 刪除key
del <key>
實例:
127.0.0.1:6379> del key1
(integer) 1
1.8 批量設置值
mset <key> value [key value ...]
實例:
127.0.0.1:6379> mset a 1 b 2 c 3 d 4 e 5
OK
1.9 批量獲取
mget <kye> [key ...]
實例:
127.0.0.1:6379> mget a b c d e
1) "1"
2) "2"
3) "3"
4) "4"
5) "5"
2 hash
是一個鍵值對集合
應用場景:
緩存對象,一個key里有多個字段,比如緩存用戶登錄信息。
2.1 設置值
hset <key> field value ? ? #單個值
hmget <key> field [field ...]
實例:
127.0.0.1:6379> hset myhash name zyb
(integer) 1
127.0.0.1:6379> hmset myhash age 10 address gz
OK
2.2 查詢
hget <key> field ? ? ? #獲取單個field的值
hmget <key> field [field ..] ?#獲取多個field的值
實例:
127.0.0.1:6379> hget myhash name
"zyb"
127.0.0.1:6379> hmget myhash age address
1) "10"
2) "gz"
hkeys <key> ? #獲取所有field
實例:
127.0.0.1:6379> hkeys myhash
1) "name"
2) "age"
3) "address"
hvals <key> ? #獲取所有value
實例:
127.0.0.1:6379> hvals myhash
1) "zyb"
2) "10"
3) "gz"
hgetall <key> ?#獲取所有的field-value
實例:
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"
5) "address"
6) "gz"
hlen <key> #計算field個數
實例:
127.0.0.1:6379> hlen myhash
(integer) 3
hexists <key> field ?#判斷field是否存在
實例:
127.0.0.1:6379> hexists myhash name
(integer) 1 ?
返回1表示該field存在
hstrlen <key> field ? #計算value的字符串長度
實例:
127.0.0.1:6379> hstrlen myhash name
(integer) 3
2.3 刪除field
hdel <key> field [field ...]
實例:
127.0.0.1:6379> hdel myhash address
(integer) 1
127.0.0.1:6379> hgetall myhash
1) "name"
2) "zyb"
3) "age"
4) "10"
3 list
列表類型是用來存儲多個有序字符串
應用場景:
消息隊列: lpush+rpop=消息隊列,生產和消費
文章列表
棧: lpush+lpop=stack
lpush+ltrim =Capped collection 有限集合
3.1 添加
#從左/右邊插入元素
lpush <key> value [value ...]
實例:
127.0.0.1:6379> lpush mylist a b c d e f?
(integer) 6
#向某個元素前或后插入元素
linesert <key> before|after pivot value
示例: 在a元素之后插入aaa
127.0.0.1:6379> LINSERT mylist before a aaa
(integer) 7
#rpoplpush 移除列表key1的最后一個元素,并將該元素添加到另一個列表key2的左邊并返回
rpoplpush <key1> <key2>
3.2 刪除
#從列表左/右側彈出元素
rpop/lpop key count
實例:
127.0.0.1:6379> lpop mylist
"f"
#刪除指定元素
lrem key count value
count>0 從左到右刪除最多count個元素
count<0 從右到左刪除最多count絕對值個元素
count=0 刪除所有
示例:
127.0.0.1:6379> lrem mylist 2 a
(integer) 2
#按照索引范圍修剪列表
ltrim key start end ? ? ?#只保留列表listkey第start個到end個元素
示例:
127.0.0.1:6379> LTRIM mylist 2 5
OK
3.3 查詢
#獲取指定范圍內的元素列表
lrange key start end?
示例:
127.0.0.1:6379> LRANGE mylist 0 -1 ? ?#所有元素
1) "c"
2) "b"
3) "aaa"
4) "a"
#獲取列表指定索引下標的元素
lindex key index
示例:
127.0.0.1:6379> LINDEX mylist 2
"aaa"
#獲取列表長度
llen key
示例:
127.0.0.1:6379> LLEN mylist
(integer) 4
#修改指定索引下標的元素
lset key index newValue
示例:
127.0.0.1:6379> LSET mylist 2 python ? #索引從0開始計算
OK
127.0.0.1:6379> LRANGE mylist 0 -1
1) "c"
2) "b"
3) "python"
4) "a"
4 set集合
應用場景:
標簽,給用戶添加標簽
獨立ip
點贊
共同好友,利用set的交集
4.1 添加元素,返回結果為添加成功的元素個數
sadd key member [member ...]
示例:
127.0.0.1:6379> sadd myset a b c d
(integer) 4
4.2 刪除元素,返回結果為成功刪除元素個數
srem key memeber [member ...]
示例:
127.0.0.1:6379> SREM myset a
(integer) 1
4.3 計算元素個數
scard key
示例:
127.0.0.1:6379> SCARD myset
(integer) 3
4.4 判斷元素是否在集合中
sismember key member
示例:
127.0.0.1:6379> SISMEMBER myset a
(integer) 0 ?#不存在
127.0.0.1:6379> SISMEMBER myset b
(integer) 1 ?#存在
4.5 隨機從集合返回指定個數元素,不會刪除
srandmember key [count]
4.6 隨機從集合彈出元素刪除
spop key [count]
4.7 獲取所有元素
smembers key
4.8 求多個集合的交集
sinter key [key ...]
4.9 求多個集合的并集
suinon key [key ...]
4.10 求多個集合差集
sdiff key [key ...]
4.11 將交集、并集、差集的結果保存
sinterstore destination key [key ...]?
suionstore destination key [key ...]?
sdiffstore destination key [key ...]?
4.12 將集合中一個member移到另一個集合
SMOVE source destination member
實例:
127.0.0.1:6379> SMOVE myset myset2 b
(integer) 1
127.0.0.1:6379> SMEMBERS myset2
1) "b"
5 zset有序集合
應用場景:
排行榜
社交網絡
隊列
5.1 添加成員
zadd key score member [score member ...]
zincrby key increment member ? ?#增加成員分數
示例:
127.0.0.1:6379> ZADD myzadd 1 a 2 b 3 c 4 d 5 e 6 f
(integer) 6
5.2 計算成員個數
zcard key
5.3 計算某個成員的分數
zscore key member
5.4 計算成員的排名
zrank key member ?#分數從低到高返回排名
zrevrange key member #分數從高到低返回排名
5.5 返回指定排名范圍成員
zrange key start end ?#從低到高
zrevrage key start end #從高到低
5.6 返回指定分數范圍的成員
ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT offset count] ? ? #從低到高
ZREVRANGEBYSCORE key max min [WITHSCORES] [LIMIT offset count] ?#從高到低
5.7 返回指定分數范圍成員個數
zcount key min max
5.8 刪除成員
zrem key member [member ...]
5.9 刪除指定排名內的升序元素
ZREMRANGEBYRANK key start stop
5.10刪除指定分數范圍的成員
ZREMRANGEBYSCORE key min max
5.11 交集
ZINTERSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]
5.12 并集
ZUNIONSTORE destination numkeys key [key ...] [WEIGHTS weight] [AGGREGATE SUM|MIN|MAX]