redis 有序集合(sorted set)实现排名

特性:元素不重复,分值可重复

假设有销售3人,张三、李四、王五。1月25号 分别销售额为0.01、0.02、0.03,1月26号 分别销售额为0.03、0.02、0.01

zincrby 20210125 0.01 张三

zincrby 20210125 0.02 李四

zincrby 20210125 0.03 王五

zincrby 20210126 0.03 张三

zincrby 20210126 0.02 李四

zincrby 20210126 0.01 王五

那么计算某一天的排名为:zrange 20210125 0 -1、zrevrange 20210125 0 -1

计算多天,如一周,一个月:ZUNIONSTORE outlast_week 2 20210124 20210125 WEIGHTS 1 1、zrevrange outlast_week 0 9 withscores、zrevrange outlast_week 0 -1

贴士:

案例中使用0.01等 float类型的数值进行zincrBy会有精度问题,如0.01+0.01=0.019999999999,实例操作中,应尽量避免double型数值操作,可将所有数值同时放大100倍进行相加减,最终再除以100得结果

猜你喜欢

转载自blog.csdn.net/weixin_39177464/article/details/113135962