卑微小吴励志写博客第22天。
这里补充一种set类型数据的应用场景
set类型的业务场景
黑白名单
tips
redis可以应用于基于黑名单和白名单设定的服务控制。
sorted_set数据类型
新的需求:
数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式。
既能存储大量数据,又可以进行排序。
sorted_set存储形式
在set数据类型的基础上,加上score值,可以让数据通过score来排序。
sorted_set基本操作
添加数据
- zadd key member1 score1 [member2 score2]
获取全部数据
- zrange key start stop [withscores]
- zrevrange key start stop [withscores] 倒序排序
删除数据
- zrem key member [member … ]
按条件获取数据
- zrangebyscore key min max [withscore] [limit]
- zrevrangebyscore key min max [withscore]
条件删除数据
- zremrangebyrank key start stop 这一个删除有索引的概念
- zremrangbyscore key min max
注意:
- min和max限定了查询的条件。
- start和stop用于限定查询的范围,作用于索引,表示开始索引和结束索引
- offset和count用于限定查询范围,用于与于查询结果,表示开始位置和数据总量。
获取集合数据总量
- zcard key
- zcount key min max
集合交、并操作
- zinterstore destination numkeys key [key …]
- zunionstore destination numkeys key [key…]
sorted_set的扩展操作
业务场景
业务分析
- 这类榜单类的数据, 一般要包括排序。
- 有些还要有第几名的分析。
解决方案
获取数据对应的索引(排名)
- zrank key member
- zrevrank key member
score值获取与修改
- zscore key member
- zincrby key increment member
tips
redis可以用于计数器组合排序功能对应的排名
sorted_set数据类型的注意事项
- score数据的数据存储空间是64位,是有范围的,一般不会超。
- score保存的数据也可以是小数,是一个双精度浮现小数,可能会丢失精度,一般不使用。
- sorted_set的底层数据结构还是基于set的,因此数据不能重复,如果重复添加一个数据,score值会覆盖,取最后一次score值。
业务场景
解决方案
redis是可以拿到当前时间的
- time
tips
redis可以用于定时任务顺序管理或任务过期管理。
业务场景
任务/消息权重设定应用
对于任务或者消息在队列中时,对于优先级较高的先处理,如何实现任务权重管理。
解决方案
利用score来记录权重即可解决。
tips
redis可用于及时任务/消息队列执行管理。
今天的分享就到这里了,小伙伴们加油!