Quantcast
Channel: CNode:Node.js专业中文社区
Viewing all articles
Browse latest Browse all 14821

关于redis做积分排行榜重置问题

$
0
0

用redis有序集合做积分排行榜,定期对榜里的积分按一定的规则重置。 假如1个星期重置一次,重置就是对当前分数做一个减法,每个人的分数不一样,重置的时候减掉的分数也不一样,也就是说重置之后榜单里所有人的分数是不一样的。 假如现在榜单里有上万条或者上十万条数据,我现在能想到的重置方式有如下几种: 1.一条一条的重置,即先get一条出路,然后按规则得到重置后的积分,最后在set进去; 2.直接一次性把榜单里所有数据全get出来,处理完了之后再全部set回去; 3.按排名段处理,例如先处理1-500,完了501-1000,这样重复直到处理完整个榜单,也就是一次500条get然后再set。 方法一,肯定是不可行的,因为这样效率太低了。 方法二,对于上万条或者上十万条数据不知道效率如何,各位前辈有做过的吗? 方法三,如果是数据库的话这样肯定是可行的,但是redis,假如我先处理1-500排名的数据,处理完了之后在set回去,这处理掉的500条数据肯定会打乱之前的排名,所以这个方法应该也是不可行的。 各位各有做过类似的经历吗?求指教!


Viewing all articles
Browse latest Browse all 14821

Trending Articles