字符串 Strings
以键值对的形式存储数据
SET key value
设置 key 的值为 value
127.0.0.1:6379> SET key aaww
OK
127.0.0.1:6379> GET key
"aaww"
SETEX key seconds value
EX=expire,设置 key 的值为 value,seconds秒后过期
PSETEX key milliseconds value
设置 key 的值为 value,milliseconds毫秒后过期
EXPIRE key timeout
设置key在timeout秒后过期
TTL key
查看key还有多久过期
127.0.0.1:6379> SETEX key 20 dddw
OK
127.0.0.1:6379> TTL key
(integer) 12
SETNX key value
NX=not exist,当 key 不存在时,将 key 的值设置为value,若已有 key 则返回错误
GET key
返回 key 的值
GETSET key value
返回 key 现在的值,然后重新将 key 的值设置为 value
127.0.0.1:6379> SET key a
OK
127.0.0.1:6379> GETSET key b
"a"
127.0.0.1:6379> GET key
"b"
APPEND key value
如果 key 存在并且是字符串,把 value 追加到 key 的尾部
如果 key 不存在,设置 key 的值为value
最后返回 value 的长度
127.0.0.1:6379> GET key
"b"
127.0.0.1:6379> APPEND key ws
(integer) 3
127.0.0.1:6379> GET key
"bws"
SETRANGE key num value
从第 num 个字符开始(非下标),将 value 覆盖原字符串,最后返回新字符串的长度
127.0.0.1:6379>set key aaaaaaaa
OK
127.0.0.1:6379>SETRANGE key 2 bbbb
(integer) 8
127.0.0.1:6379>get key
"aabbbbaa"
GETRANGE key start end
返回 key 的值中,start 到 end 部分(按下标,不包含start)
127.0.0.1:6379>set key 123456789
OK
127.0.0.1:6379>GETRANGE key 2 5
"3456"
INCR / DECR key
对 key 进行自增(INCR) / 自减(DECR) 操作
若 key 不存在,则创建一个默认值为0的 key
若 key 不为数字,则返回错误
127.0.0.1:6379> SET key 1
OK
127.0.0.1:6379> INCR key
(integer) 2
127.0.0.1:6379> GET key
"2"
INCRBY / DECRBY key num
对 key 进行 加(INCRBY) / 减(DECRBY) 操作,num为 加数 / 减数
若 key 不存在,则创建一个默认值为0的 key
若 key 不为数字,则返回错误
127.0.0.1:6379> GET key
"2"
127.0.0.1:6379> INCRBY key 12
(integer) 14
127.0.0.1:6379> GET key
"14"
INCRBYFLOAT key num
为浮点型的 key 做加 num 操作
key 不存在则默认0,不为浮点则返回错误
MSET key value [ key2 value2 key3 value3 ... ]
同时设置多个 key-value 键值对
MGET key [ key2 key3 ...]
同时返回多个key 的值
127.0.0.1:6379> MSET k1 1 k2 2 k3 3
OK
127.0.0.1:6379> MGET k1 k2 k3
1) "1"
2) "2"
3) "3"
DEL key [key2 key3 ...]
删除一个或多个 key 的值
STRLEN key
获取 key 的值的长度
127.0.0.1:6379> SET key dsadsasdasd
OK
127.0.0.1:6379> STRLEN key
(integer) 11
EXISTS key
判断key是否存在
列表 List
通过链表实现,通过不同指令可以用作 栈 和 队列
LPUSH key elem [ e2 e3 ...]
L=left,将一个或多个元素从表头依次插入
若 key 不存在,则创建一个再执行
若 key 存在但不是列表,则返回错误
127.0.0.1:6379>LPUSH key a b c d
(integer) 4
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
LPUSHX key e [ e2 e3 ...]
X=exist,当 key 存在且是一个列表的时候,执行插入操作
RPUSH key e [e2 e3 ...]
R=right,将一个或多个元素从表尾依次插入
若 key 不存在,则创建一个再执行
若 key 存在但不是列表,则返回错误
127.0.0.1:6379>LPUSH key a b c d
(integer) 4
127.0.0.1:6379>LRANGE key 0 -1
1) "a"
2) "b"
3) "c"
4) "d"
RPUSHX key e [ e2 e3 ...]
X=exist,当 key 存在且是一个列表的时候,执行插入操作
LPOP key [count ]
将count个元素从表头方向移除并返回(不输入count默认为1),如果key为空则报错
127.0.0.1:6379> LPUSH key a b c d
(integer) 4
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> LPOP key
"d"
127.0.0.1:6379> LRANGE key 0 -1
1) "c"
2) "b"
3) "a"
127.0.0.1:6379> LPOP key 2
1) "c"
2) "b"
127.0.0.1:6379> LRANGE key 0 -1
1) "a"
RPOP key [ count ]
将count个元素从表尾方向移除并返回(不输入count默认为1),如果key为空则报错
127.0.0.1:6379> LPUSH key a b c d
(integer) 4
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> RPOP key
"a"
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> RPOP key 2
1) "b"
2) "c"
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
RPOPLPUSH key key2
将key尾部元素弹出,将其插入到key2的头部,并返回该弹出的元素
如果元素不存在,则返回nil
127.0.0.1:6379> LPUSH key a b c d
(integer) 4
127.0.0.1:6379> LPUSH key2 1 2 3 4
(integer) 4
127.0.0.1:6379> RPOPLPUSH key key2
"a"
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
127.0.0.1:6379> LRANGE key2 0 -1
1) "a"
2) "4"
3) "3"
4) "2"
5) "1"
LREM key count elem
L=list,移除 key 中与elem相同的 count 个元素,返回被移除的元素数量
127.0.0.1:6379> LPUSH key 1 1 1 1 1 2 2 2 2 3
(integer) 10
127.0.0.1:6379> LREM key 2 1
(integer) 2
127.0.0.1:6379> LRANGE key 0 -1
1) "3"
2) "2"
3) "2"
4) "2"
5) "2"
6) "1"
7) "1"
8) "1"
127.0.0.1:6379> LREM key 2 3
(integer) 1
127.0.0.1:6379> LRANGE key 0 -1
1) "2"
2) "2"
3) "2"
4) "2"
5) "1"
6) "1"
7) "1"
LLEN key
L=list, 返回列表key 的长度,不存在返回0,若key不是列表返回错误
LINDEX key index
返回 key 中 下标为 index 的元素
127.0.0.1:6379> LPUSH key a b c d
(integer) 4
127.0.0.1:6379> LINDEX key 2
"b"
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
LINSERT key BEFORE/AFTER pivot elem
将元素 elem 插入到 key 中,位于pivot 之前(BEFORE)或 之后(AFTER)
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> LINSERT key BEFORE b 1
(integer) 5
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "1"
4) "b"
5) "a"
LSET key index elem
将 key 中下标为 index 的值设置为 elem
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
4) "a"
127.0.0.1:6379> LSET key 2 h
OK
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "h"
4) "a"
LRANGE key start stop
L=list,返回 key 中的值,下标为 start 和 stop之间(闭区间)
127.0.0.1:6379> LPUSH key a b c d
(integer) 4
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "b"
4) "a"-1表示最后一位
LTRIM key start stop
截取 key 中下标为 start 和 stop 之间的元素
127.0.0.1:6379> LRANGE key 0 -1
1) "d"
2) "c"
3) "h"
4) "a"
127.0.0.1:6379> LTRIM key 1 2
OK
127.0.0.1:6379> LRANGE key 0 -1
1) "c"
2) "h"
BLPOP key [key2 key3 ...] timeout
BL=block left,当key的表头中没有元素可以弹出时,阻塞该列表 timeout秒,直到超时退出或者发现新的可弹出元素为止
BRPOP key [key2 key3 ...] timeout
同上,key 的表尾
BRPOPLPUSH key key2 timeout
上面RPOPLPUSH的阻塞版本
哈希 Hashes
多个键值对的集合
HSET hash key value [ key2 value2 ...]
将哈希表hash中键 key 的值设置为 value,可以设置多个键值对
HSETNX hash key value
NX=not exist,当hash不存在时,创建一个哈希表hash,然后将表中key 设置为 value
HGET hash key
获取hash表中,key的值
HMGET hash key [key2 ...]
获取hash表中,多个key的值
127.0.0.1:6379> HSET hash k1 v1 k2 v2
(integer) 2
127.0.0.1:6379> HMGET hash k1 k2
1) "v1"
2) "v2"
HEXISTS hash key
判断key是否存在于hash表中,1为真表示存在,0位假表示不存在
127.0.0.1:6379> HMGET hash k1 k2
1) "v1"
2) "v2"
127.0.0.1:6379> HEXISTS hash k1
(integer) 1
127.0.0.1:6379> HEXISTS hash k3
(integer) 0
HDEL hash key [key2 key3]
删除hash表中指定的key
HLEN key
返回hash表中key 的数量
HINCRBY hash key num
将hash表中,key的值增加num
HKEYS hash
返回hash表中所有的key
HVALS hash
返回hash表中所有的value
HGETALL hash
返回hash表中所有的键值对
集合 Sets
不重复的数据集合
SADD key mem [ mem2 ...]
将一个或多个元素添加到集合key 中,自动忽略重复的元素
127.0.0.1:6379> SADD key m1 m2 m3 m1 m4 m1 m1
(integer) 4
127.0.0.1:6379> SMEMBERS key
1) "m2"
2) "m4"
3) "m3"
4) "m1"
SREM key mem [mem2 ...]
将指定元素从集合 key中删除
127.0.0.1:6379> SREM key m1 m2
(integer) 2
127.0.0.1:6379> SMEMBERS key
1) "m3"
2) "m4"
SMEMBERS key
返回集合key中的所有元素
SISMEMBER key mem
判断元素mem是否存在于集合key中,存在返回1,反之0
SPOP key [count]
随机移除并返回集合key中的count个元素(不输入count默认为1)
127.0.0.1:6379> SMEMBERS key
1) "m2"
2) "mw"
3) "ma"
4) "m1"
5) "md"
6) "mq"
7) "m3"
8) "m4"
9) "mm"
127.0.0.1:6379> SPOP key
"m2"
127.0.0.1:6379> SPOP key
"ma"
127.0.0.1:6379> SPOP key
"m4"
SRANDMEMBER key [count]
类似SPOP,只不过不移除只返回
127.0.0.1:6379> SMEMBERS key
1) "m1"
2) "m3"
3) "mq"
4) "mm"
5) "mw"
6) "md"
127.0.0.1:6379> SRANDMEMBER key
"m3"
127.0.0.1:6379> SRANDMEMBER key
"mm"
127.0.0.1:6379> SRANDMEMBER key
"m3"
127.0.0.1:6379> SMEMBERS key
1) "m1"
2) "m3"
3) "mq"
4) "mm"
5) "mw"
6) "md"
SMOVE key key2 mem
将mem元素从集合key移动到集合key2
127.0.0.1:6379> SMEMBERS key
1) "m1"
2) "m3"
3) "mq"
4) "mm"
5) "mw"
6) "md"
127.0.0.1:6379> SMEMBERS key2
1) "l3"
2) "l2"
3) "l1"
127.0.0.1:6379> SMOVE key key2 mm
(integer) 1
127.0.0.1:6379> SMEMBERS key
1) "m1"
2) "m3"
3) "mq"
4) "mw"
5) "md"
127.0.0.1:6379> SMEMBERS key2
1) "l3"
2) "mm"
3) "l2"
4) "l1"
SCARD key
返回集合key中元素的数量
SINTER key [key2 ...]
返回多个集合的交集
127.0.0.1:6379> SADD key m1 l1 m2 l2 aa ss dd ww
(integer) 8
127.0.0.1:6379> SADD key2 m1 l1 m2 l2 11 22 33 44
(integer) 8
127.0.0.1:6379> SINTER key key2
1) "m2"
2) "l1"
3) "m1"
4) "l2"
SUNION key [key2 ...]
返回多个集合的并集
127.0.0.1:6379> SUNION key key2
1) "m2"
2) "22"
3) "11"
4) "l1"
5) "m1"
6) "ss"
7) "44"
8) "ww"
9) "33"
10) "aa"
11) "l2"
12) "dd"
SDIFF key [key2 ...]
以key为核心返回差集,返回key中有其他集合中没有的元素
127.0.0.1:6379> SADD key m1 l1 m2 l2 aa ss dd ww
(integer) 8
127.0.0.1:6379> SADD key2 m1 l1 m2 l2 11 22 33 44
(integer) 8
127.0.0.1:6379> SDIFF key key2
1) "ww"
2) "aa"
3) "ss"
4) "dd"
有序集合 SortedSet
为集合中的成员添加一个权重(score),以作排序
ZADD key score mem [score2 mem2 ...]
将一个或多个成员mem及其权重score 添加到有序集合key中
127.0.0.1:6379> ZADD key 999 wangfeng 600 jinitaimei 200 mohu 59 tty
(integer) 4
ZREM key mem [mem2 ...]
删除有序集合key 中的指定成员
ZSCORE key mem
返回有序集合key 中元素mem 的权重
127.0.0.1:6379> ZSCORE key wangfeng
"999"
ZINCRBY key num mem
为有序集合key中的元素mem的权重增加num
127.0.0.1:6379> ZSCORE key wangfeng
"999"
127.0.0.1:6379> ZINCRBY key 100 wangfeng
"1099"
127.0.0.1:6379> ZSCORE key wangfeng
"1099"
ZCARD key
返回有序集合key中的成员数量
ZCOUNT key min max
返回有序集合key中,权重在min和max之间的成员数量
127.0.0.1:6379> ZCOUNT key 500 2000
(integer) 2
ZRANGE key start stop [WITHSCORES]
返回有序集合key中指定下标区间的成员(从小到大升序排列),加WITHSCORES表示返回带上权重,不加只返回成员不返回权重
127.0.0.1:6379> ZRANGE key 0 -1
1) "tty"
2) "mohu"
3) "jinitaimei"
4) "wangfeng"
127.0.0.1:6379> ZRANGE key 0 1
1) "tty"
2) "mohu"127.0.0.1:6379> ZRANGE key 0 1 WITHSCORES
1) "tty"
2) "59"
3) "mohu"
4) "200"
ZRANGEBYSCORE key min man [WITHSCORES]
返回区间在min和max之间的权重成员,按顺序从小到大升序排列,WITHSCORES同上
127.0.0.1:6379> ZRANGEBYSCORE key 500 2000
1) "jinitaimei"
2) "wangfeng"
127.0.0.1:6379> ZRANGEBYSCORE key 500 2000 WITHSCORES
1) "jinitaimei"
2) "600"
3) "wangfeng"
4) "1099"
ZREVRANGESCORE key min max [WITHSOCRE]
REV=rever,同上,按顺序从大到小降序排列,WITHSCORES同上
ZRANK key mem
获取成员mem的排名,按权重从小到大升序排列
127.0.0.1:6379> ZRANGE key 0 -1 WITHSCORES
1) "tty"
2) "59"
3) "mohu"
4) "200"
5) "jinitaimei"
6) "600"
7) "wangfeng"
8) "1099"
127.0.0.1:6379> ZRANK key tty
(integer) 0
ZRERANK key mem
同上,按权重从大到小降序排列
ZREMRANGERAK key start stop
移除key中指定排名区间的的成员,排名按权重从大到小降序排列
ZREMRANGSCORE key min max
移除key中指定分数区间的的成员
ZREMRANGEBYLEX key min max
移除key中字典序在指定区间的成员,用于有特定前缀后缀的成员
127.0.0.1:6379> ZRANGE key 0 -1 WITHSCORES
1) "a"
2) "0"
3) "b"
4) "0"
5) "c"
6) "0"
7) "d"
8) "0"
127.0.0.1:6379> ZREMRANGEBYLEX key [a [b
(integer) 2
127.0.0.1:6379> ZRANGE key 0 -1 WITHSCORES
1) "c"
2) "0"
3) "d"
4) "0"
ZRANGEBYLEX key min max
返回字典序在指定区间的成员,按字典序从小到大排列
ZLENCOUNT key min man
返回字典序在指定区间中的成员数量
位图 BitMaps
二进制位组成的数组,对位进行操作,只存放0和1
SETBIT key offset value
设置或者清除偏移量为offset的位数据
127.0.0.1:6379> GETBIT key 333
(integer) 0
127.0.0.1:6379> SETBIT key 333 1
(integer) 0
127.0.0.1:6379> GETBIT key 333
(integer) 1
GETBIT key offset
获取偏移量为offset的位数据
BITOP operation destkey key [key2 ...]
对一个或多个key进行逻辑运算,结果存放在destkey中
operation逻辑运算可以是AND OR XOR NOT
BITPOS key bit [start [end
返回第一个bit的位置,start和end指定从哪里开始,不填默认0到-1
127.0.0.1:6379> SETBIT key 333 1
(integer) 0
127.0.0.1:6379> BITPOS key 1
(integer) 333
BITCOUNT key [start [end
返回start到end为止所有设置为1的数量
HyperLogLog
一种概率性数据结构,用于估算集合中不重复元素的数量,牺牲了一部分精度,换来了更高效的内存利用
PFADD key elem [elem2 ...]
添加一个或多个elem到key中,若key不存在则创建一个
PFCOUNT key
返回⼀个key的近似的基数。
127.0.0.1:6379> PFADD hllog a b c d e f g
(integer) 1
127.0.0.1:6379> PFCOUNT hllog
(integer) 7
127.0.0.1:6379> PFADD hllog a a b b
(integer) 0
127.0.0.1:6379> PFCOUNT hllog
(integer) 7
127.0.0.1:6379> PFADD hllog q w e r
(integer) 1
127.0.0.1:6379> PFCOUNT hllog
(integer) 10
PFMERGE destkey key [key2 ...]
将一个或多个key 合并destkey中
流 streams
消息队列
XADD key ID field value [field value ...]
向流mystreams中的field记录添加value消息,ID可以自定义,也可以用*自动生成,
127.0.0.1:6379> XADD key * name laowang uname 1011001
"1710155348762-0"
127.0.0.1:6379> XRANGE key - +
1) 1) "1710155348762-0"
2) 1) "name"
2) "laowang"
3) "uname"
4) "1011001"
XLEN key
返回流中消息数量
XRANGE key start end
返回流key中start和end之间的的消息列表," - "表示最小,“ + ”表示最大
XINFO STREAM key
返回流key的信息
XREAD [BLOCK mseconds] STREAMS key id
返回流key中的比id大的消息列表,若没有则阻塞mseconds毫秒,直到过期或者有可用消息返回
127.0.0.1:6379> XREAD STREAMS key 0-0
1) 1) "key"
2) 1) 1) "1710155348762-0"
2) 1) "name"
2) "laowang"
3) "uname"
4) "1011001"
127.0.0.1:6379> XREAD BLOCK 1000 STREAMS key 1710155348763-0
(nil)
(1.08s)
XDEL key id
从流key中移除指定id的消息
XGROUP CREATE key groupname consumer
在流key中创建一个消费者组groupname,并在其中创建一个消费者consumer
consumer可以是id 或者 $(表示从尾部开始消费,只接受新消息,当前 Stream 消息会全部忽略)
注意key必须是存在的流,不然会报错
XGROUP DELCONSUMER key groupname consumer
从key的消费者组中删除一个消费者
GROUP DESTROY key groupname
从key中删除一个消费者组
XINFO GROUPS key
返回key中的消费者组列表
XINFO CONSUMERS key groupnam
返回key中消费者组中的消费者列表