redis基本数据类型学习

字符串 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中消费者组中的消费者列表

  • 20
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值