TreeviewCopyright © qgao 2021-* all right reserved, powered by aleen42

数据类型

1 string:

expire key 60 # 数据在 60s 后过期

setex key 60 value # 数据在 60s 后过期(该命令字符串类型独有)

strlen key # 返回 key 所储存的字符串值的长度。

场景:计数

2 list:

rpush,lpop,lpush,rpop,lrange,llen

场景:消息队列

3 hash:

hset,hmset,hexists,hget,hgetall,hkeys,hvals

场景:对象

4 set:

sadd,spop,smembers,sismember,scard,sinterstore,sunion

scard mySet # 查看 set 的长度

sinterstore mySet3 mySet mySet2 # 获取 mySet 和 mySet2 的交集并存放在 mySet3 中

场景:求交集或并集

5 sorted set

相较于set增加了一个权重参数 score:

zadd,zcard,zscore,zrange,zrevrange,zrem

zadd myZset 3.0 value1 # 添加元素到 sorted set 中 3.0 为权重

zscore myZset value1 # 查看某个 value 的权重

zrevrange myZset 0 1 # 逆序输出某个范围区间的元素,0 为 start 1 为 stop

场景:排行榜

6 bitmap:

setbit 、getbit 、bitcount、bitop

setbit mykey 7 1 # 生成7位(这7位全部默认为0),并且设置第7位为1

setbit mykey 8 1 # 增加第8位,设置第8位为1

bitcount mykey # 统计被被设置为 1 的位的数量,return 2;

bitop (and/or/not/xor) destkey key1 key2 [key3 ...]

and/or/not/xor是后面的key1,key2之间的位运算操作符,将结果保存进destkey

场景:统计

7 Stream

Redis 5.0 新增加的一个数据结构 Stream 可以用来做消息队列,Stream 支持:

发布 / 订阅模式 按照消费者组进行消费 消息持久化( RDB 和 AOF) 不过,和专业的消息队列相比,还是有很多欠缺的地方比如消息丢失和堆积问题不好解决。

我们通常建议是不需要使用 Redis 来做消息队列的,你完全可以选择市面上比较成熟的一些消息队列比如 RocketMQ、Kafka。

8 zset

底层跳表实现的,

跳表先从第⼀层查找,不满⾜就下沉到第⼆层找,因为每⼀层都是有序的,写⼊和插⼊的时间复杂度都是O(logN)

zset为什么不⽤红⿊树(跳表实现简单,踩坑成本低,红⿊树每次插⼊都要通过旋转以维持平衡,实现复杂)

红⿊树: N叉平衡树,O(logN)

Copyright © qgao 2021-* all right reserved,powered by Gitbook该文件修订时间: 2022-07-08 20:05:37

results matching ""

    No results matching ""