前言: 现在很多APP都有推荐新用户得奖金的活动,比如云闪付,支付宝之类都有,在活动页面加上排行榜,看到那些排名靠前的用户获得那么多奖金更是让新用户跃跃欲试。那排行榜如何实现呢
redis有序集合sorted set的操作
1)添加数据
如果没有名为bonus的sorted set会直接创建一个,并添加第一个数据,用户Ray的奖金为10000.
如下
zadd bonus 10000 Ray //第一条
//下面是添加的其他样本数据
zadd bonus 9500 Tom
zadd bonus 11000 Kris
zadd bonus 1000 batty
...
2)排序输出
俩种方式,第一种是zrange命令,升序排序;第二种不用说肯定是降序,用zrevrange
示例:
第一种
zrange bonus 0 2 //按奖金升序输出前2个用户名称
第二种
zrevrange bonus 0 2 //按奖金降序输出前2个用户名称
当然还是不行,还需要输出用户对应的奖金
命令如下
zrevrange bonus 0 2 withscores//按奖金降序输出前2个用户名称以及对应的奖金
3)修改数据
很简单 命令和添加数据一样,因为会覆盖原来的数据
示例
:zadd bonus 2000 batty //原来的数据会变为2000
也有第二种方法,在原来数据基础上增加奖金
示例
:zincrby bonus 1000 batty //则和上面一样让batty用户的奖金变为2000了
4)获取参与活动的成员数
zcard bonus 即可
5)查询某个用户的奖金
zscore bonus batty //返回2000 因为第三步修改为2000了
6)查询某个奖金区间的人数
示例:
zcount bonus 9000 10000 //返回2,有俩人。在做后台统计的时候经常用到
7)删除某个用户
示例:
zrem bonus Ray
tip:实际环境中,有时我们会重启系统,为了不影响数据的展示,会伴随系统重启的时候加上初始化更新排行榜的功能。
欢迎大家加入Java技术群
1544106895022.png
网友评论