设计并实现排行榜业务,排行榜有分数和时间两个字段,分数越高排名越靠前,分数相同时越早达到分数的排名越靠前.所有玩家访问排行榜的时候都可以看见前100名实时数据,101-9999名只能看见自己的排名,超过1w名显示未上榜
是要写一个项目吗?思路:
1、数据存储在mysql中,核心字段为uid、score和time;
2、对score和time建索引,排序时按order By score desc,time asc limit 0,100;
3、展示排行榜时,先查询前100名的排名数据(实时查询数据库),第101-9999名不实时查,可以做一个几分钟的缓存,过期后定时刷到缓存中;
4、至于自己上没上榜,只需要根据uid判断自己在哪个数据段中就行了。