redis实现音乐排行榜功能
sorted_set类型
- 新的存储需求:数据排序有利于数据的有效展示,需要提供一种可以根据自身特征进行排序的方式
- 需要的存储结构:新的存储模型,可以保存可排序的数据
- sorted_set类型:在set的存储结构基础上添加可排序字段
基本操作
- 添加数据
zadd key score1 member1 [score2 member2]
- 获取全部数据
zrange key start stop [WITHSCORES]
zrevrange key start stop [WITHSCORES]
- 删除数据
zrem key member [member ...]
- 按条件获取数据
zrangebyscore key min max [WITHSCORE] [LIMIT]
zrevrangebyscore key max min [WITHSCORE]
- 条件删除数据
zremrangebyrank key start stop
zremrangebyscore 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 ...]
业务场景
票选广东十大杰出青年,各类综艺选秀海选投票
各类资源网站TOP10(电影,歌曲,文档,电商,游戏等)
聊天室活跃度统计
游戏好友亲密度
业务分析
- 为所有参与排名的资源建立排序依据
解决方案
- 获取数据对应的索引(排名)
zrank key member
zrevrank key member
- score值获取与修改
zscore key member
zincrby key increment member
Trips 13 :
- redis应用于计数器组合排序功能对应的排名