六、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范围内的成员数
redis五种数据结构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获取到期的任务进⾏处理。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论