1.新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
2.需要的存储结构:新的存储模型,可以保存可排序的数据,可以存储大量数据
3.sorted_set类型:在set的存储结构基础上添加可排序字段,及排序操作利用score,score不是数据,不存储数据,只用于排序

添加数据
zadd key score1 member1 [score2 member2]获取全部数据
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]删除数据
zrem key member [member...]按条件获取数据
zrangebyscore key min max [WITHSCORES] [LIMIT]
zrevrangebyscore key max min [WITHSCORES]条件删除数据
zremrangebyrank key start stop
zremrangebyscore key min max
注意:
1.min与max用于限定搜索查询的条件
2.start与stop用于限定查询范围,作用于索引,表示开始和结束索引
3.offset与count用于限定查询范围,作用于查询结果,表示开始位置和数据总量
获取集合数据总量
zcard key
zcount key min max集合交,并操作
zinterstore destination numkeys key
zunionstore destination numkeys key业务场景1
票选广东十大杰出青年,各类综艺选秀海选投票
各类资源网站
聊天室活跃度统计
业务分析
为所有参与排名的资源建立排序依据
解决方案
获取数据对应的索引
zrank key member
zrevrank key memberscore值获取与修改
zscore key member
zincrby key increment memberTips13:
redis应用于计数器组合排序功能对应的排名
业务场景2
任务/消息权重设定应用
当任务或者消息待处理,形成任务队列或消息队列是,对于高优先级的任务要保障对其优先处理,如何实现任务权重管理
解决方案
对于带有权重的任务,优先处理权重高的任务,采用score记录权重即可
如果权重条件过多是,需要对排序score值进行处理,例如外贸订单优先于国内订单,总裁订单优先于员工订单,经理订单优先于员工订单
1.因score长度受限,需要对数据进行阶段处理,尤其是时间设置为小时或分钟级即可
2.先设定订单类别,后设定订单发起角色类别,整体score长度必须是统一的,不足位补0.第一排序规则守卫不得是0
例如外贸101,国内102,经理004,员工008
员工下的外贸单score值为101008(优先)
经理下的国内单score值为102004
版权声明:本文为qq_45179904原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。