全民来打飞机~~(设计探讨)

话说我辉姐姐给我安排过一个面试题:

设计一个打飞机游戏,玩家可是实时查看朋友的排名,自己的分数情况,如何设计。

 

当初一开始的时候,我的思维还是停留在如何设计数据库表,如何构建一个朋友圈,确实这些也很重要。

但是其实辉爷想听的还更多的如何对排名分数进行存储,如何优化。

 

其实方案也很明显,在数据库和展示前面加一个redis做缓存,关键是这个缓存该怎么做?

开始我的想法是不就是加个缓存,用户得分都扔进redis,然后设置一个定时写入数据库保证数据一致性和效率。

我以为我这个问题回答完了

 

 

现在在看redis官网,我突然发现如下内容:

 

使用有序集合你可以:

  • 在大型在线游戏中创建一个排行榜,每次有新的成绩提交,使用ZADD命令加入到有序集合中。可以使用ZRANGE命令轻松获得成绩名列前茅的玩家,你也可以使用ZRANK根据一个用户名获得该用户的分数排名。把ZRANK 和 ZRANGE结合使用你可以获得与某个指定用户分数接近的其他用户。这些操作都很高效。

使用redis把排名这个问题能处理的很好了。

(后面整理整理把这个设计写的明白点,看来多看看书还是挺有收获的)

posted @ 2015-12-04 11:05  一行白龙上青天  阅读(202)  评论(0编辑  收藏  举报