Redis入门到精通(六)——sorted_set基本操作、sorted_set扩展操作(实现排行榜功能)、sorted_set注意事项、sorted_set应用场景(定时任务执行顺序、消息任务的权重设定)

sorted_set类型结构:在set类型的基础上进行排序

一、sorted_set类型数据的基本操作

添加数据
zadd key score1 member1 [score2 member2]

获取全部数据
zrange key start stop [withscores]         #如果不写withscores就只会显示member,默认是升序排名
zrevrange key start stop [withscores]    #降序排名

删除数据
zrem key member [member]

按条件获取数据
zrangebyscore key min max [withscores] [limit]   #min和max是填写score的值,表示范围,limit是限制显示几条,带索引
zrevrangebyscore key max min [withscores]

条件删除数据
zremrangebyrank key start stop      #按索引删除
zremrangebyscore key min max     #按score值删除
注意:
1.min和max用于限定搜索查询的条件
2.start和stop用于限定查询范围,作用于索引,表示开始和结束索引
3.limit的offset和count用于限定查询范围,作用于查询结果,表示开始位置和数据总量
获取集合数据总数
zcard key    
zcount key min max     #查询范围内数据量有多少

集合交、并操作
zinterstore destination numkeys key      #numkeys是key的个数,把共同存在的key值相加
zunionstore destination numkeys key      

二、sorted_set类型数据的扩展操作

业务场景:实现排行榜,排名就是索引位置,redis应用于计数器组合排序功能对应的排名

获取数据对应的索引(排名)
zrank key member             #获得的索引是从0开始的
zrevrank key member

score值获取与修改
zscore key member        #获取对应的score值
zincrby key increment member     #修对应的score值,increment是修改的数字

三、sorted_set类型数据操作的注意事项

注意事项

四、sorted_set类型应用场景

1.业务场景:开通vip管理过期信息,redis应用于定时任务执行顺序管理或任务过期管理

解决方案

注意:不能把所有的信息都加入到一个sorted_set中,可以分别加入1小时内、1天内的、1周内的、1月内的等等处理队列中

2.业务场景:任务/消息权重设定应用

处理任务队列或消息队列时,采用list类型数据来处理。对于高优先级的任务要保障对其优先处理,实现任务权重管理,就要使用到sorted_set来处理

解决方案:

对于带有权重的任务,优先处理权重高的任务,采用score记录权重即可。

原文地址:https://www.cnblogs.com/wangcuican/p/12868167.html