如何设计一个实时排名系统


现在要做一款游戏产品,涉及到计分排行问题,
简单的排行用redis的sort set就能完成的,
可是动态的排行该如何设计呢?
比如按月排行,其实就是当前时间到过去30天内的排行,
因为时间是时刻在变的,所以时间维度是每秒都是变得。
应蓝浩的询问,补充下
是一个游戏,一般10-40秒玩一局,
玩完了,会有评分的,
现在需要月排名(此刻到30*24*3600秒以前的排名),
如果一个人玩多次的,按最好的成绩统计。

Redis php mysql mongodb

火石axer 10 years, 12 months ago

採樣密度呢?要先說清楚你的排行依據

huosan answered 10 years, 12 months ago

可以试试 socket.io ,这个就是维持一个长连接,有了长连接一切就好办啦〜

FallD月影 answered 10 years, 12 months ago

我也来帮忙吧。

也是用的 ZSET ,比如用户胜利加分:


 ZINCRBY DAY:20150113 60 Kavlez
ZINCRBY DAY:20150113 80 舞千寻

就像这样,那就是一天一个ZSET。
但如果最多也就统计30天的话,那就永远是30个,每天加一个 DEL 一个。

每天(或者几分钟)更新一次最近30日ZSET:


 ZUNIONSTORE LAST30 2 LAST30 DAY:20150113

前10:


 ZREVRANGE LAST30 0 10 WITHSCORES

lvnoda answered 10 years, 12 months ago

Your Answer