100万用户的排行榜如何做啊?

每个人都可以看到自己的一个排行名次,而且是实时更新的,如果用户量少,可以用redis的有序集合,如果用户量很大,这种方案肯定不行。

阅读 4.5k
5 个回答

大多数情况下都会牺牲一点实时性,因为很少有用户会关注实时排名。
有一个权衡方法可以考虑一下,就是将用户数据分片,再在各个分片中排名。因为一般来说短时间内的操作对真实排名的影响不会特别大。比如根据昨天统计的结果,每一千名内部进行排名统计,然后零点对总排名进行更新。

我们都玩过游戏吧? 网页端的一些 和pc 或者手游 都是网友类型的 都有排行榜
然而 如果细心留意发现不管网页还是客户端类的网游,其实更新排名都是次日的 也就是说排名并不是当天的

首先你要了解一件事情 是从生活角度来了解,所谓排名即便是在生活中一场高中一年的入学分班排名 300个人,
分成6给班级 按照排名先后分班的话 那也是等成绩出来以后统一进行的 所以100万用户啊 你来100万给进场都不够写的 我想还是算了吧 换成达到目标后一段时间进行 现在老板们的需求是越来越奇怪,也越来越异想天开了

当然 100万 用户如果计算机运算能力达标也不是不行,但我认为一个小小的服务器或者就咱们这些人用的服务器 是达不到的 所谓的量子计算能解决这个问题 我信

只会关注topN的人。。。。少见统计几十万后面的人

我认为可以先对各个名次段评估一个大致的评分, 然后超过这个分数的放到响应的排名池里,根据业务的敏感性对前 n 名次的进行实时排名, 然后后面的比如10w 名之后的就给个'10w+' 这种名次不就好了?

如果用redis的话,直接分好几个表,最后在对每个表的topN做排序不就好了,典型的分治问题。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题