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记录权重即可。