实时获取某用户的排名

2015-07-28 10:15:32 +08:00
 iugo
http://stackoverflow.com/questions/3333665/rank-function-in-mysql
搜索得到比较通用的解决方法, 但性能未知.

但以上解决方法有一个问题, 我想要得到某用户的排名, 不需要取出所有信息.

在我有限的知识下, 解决方法就是非实时. 在某地将所有排名暂存起来, 然后隔一段时间刷新一下. 平常就直接都这个之前暂存的排名.

如果要实时该如何做?

设想是:
首先 ORDER BY 排列, 一行一行进行匹配.
设置一个临时变量 @user_rank = 0
检查当前 user_id 是否是我们想要的, 如果不是, 则临时变量自增 1, 如果是, 则返回

只返回一个值, 计算前几名的时候性能佳.

但我不懂 MySQL, 不知道具体该怎么实现. 求教.
2929 次点击
所在节点    MySQL
5 条回复
bengol
2015-07-28 10:18:08 +08:00
用redis
Agromania
2015-07-28 10:21:08 +08:00
loveltyoic
2015-07-28 11:07:06 +08:00
2l + 1
hdshen
2015-07-28 12:59:05 +08:00
Redis 有序队列

score+ userId

很方便
wusuopuBUPT
2016-03-01 14:54:53 +08:00

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/208822

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX