六、Redis基础数据结构-zset

 1、说明

有序列表一方面是一个set,保证了内部value的唯一性,另一方面它可以给每个value赋予一个score,代表这个value的排序权重。

zset中最后一个value被移除后,数据结构被自动删除,内存被回收。

2、内部实现

zset内部的排序功能是通过跳跃列表数据结构来实现,一方面保证其是一个hash结构来存储value和score的对应关系,另一方面提供按照score的排序功能,能够指定score的范围来获取value列表的功能。

 

 上面即为跳跃列表的示意图,图中只画了3层,实际共有64层,可容纳264个元素。

3、操作指令

命令 描述

ZADD key score1 member1

       [score2 member2]

向有序集合中添加一个或多个成员。如果成员已经存在,则更新已存在的成员的score值

ZCARD key

获取有序集合的成员数

ZCOUNT key min max

计算有序集合中score值在min到max范围内的成员数

ZINCRBY key increment member

将有序集合指定成员的分数加上increment

ZRANGE key start stop [WITHSCORES] 

通过索引区间返回有序集合的成员,如果添加了WITHSCORES,则同时返回成员的分数

ZRANGEBYSCORE key min max [WITHSCORES] [LIMIT]

通过分数返回有序区间内的成员,min<=score<=max,可通过(符号来表示开区间

ZRANGEBYSCORE key (1 5:表示1<score<=5

WITHSCORES:同时返回成员的分数

ZRANK key member

返回有序集合中指定成员的索引

ZREM key member1 [member2 ...]

移除有序集合中一个或多个成员

ZREMRANGEBYRANK key start stop 

移除指定索引区间内的成员

ZREMRANGEBYSCORE key min max 

移除指定分数区间内的成员

ZREVRANGE key start stop [WITHSCORES] 

返回指定索引区间内的成员,分数从高到低

ZREVRANGEBYSCORE key max min [WITHSCORES] 

返回指定分数区间内的成员,分数从高到低

ZREVRANK key member 

返回指定成员的排名,排名按照分数从高到低进行排序

ZSCORE key member 

返回指定成员的分数

ZSCAN key cursor [MATCH pattern] [COUNT count] 

迭代遍历有序集合的成员

 4、使用场景

 4.1 延迟队列

将消息序列化成一个字符串作为zset的value,这个消息的到期处理时间作为score,然后用多个线程轮询zset获取到期的任务进行处理。

posted @ 2020-08-08 23:07  AI程序  阅读(268)  评论(0)    收藏  举报