Redis在游戏服务器中的应用

广告也精彩

游戏服务器涉及很多排名信息,如玩家排名、金钱排名、战斗力排名等。一般来说,只需要获得排名前若干名。此时,您可以使用数据库的排序功能,或者维护一个元素数量有限的top集合。但有时时候我们需要每个玩家的排名。玩家太多,无法使用数据库(全表排序压力太大),自我维护会比较麻烦。使用Redis可以很好地解决这个问题。它提供有序的SET,支持每个键值(如玩家id)有一个分数(score),每次在这个SET中添加元素,Redis会对其进行排序,修改某一元素的score后,也会更新排序,在获取数据时,可以指定排序范围。更重要的是,这服务器启动时,不需要重新计算排序结果。通过它,实时刷新排名,全服排名不再麻烦。消息队列(可跨服)Redis提供的List数据类型可用于实现消息队列。由于它是独立于游戏服务器的,多个游戏服务器可以交换数据并发送事件。Redis还提供了发布和订阅的事件模型。利用这些,我们不必实现一套服务器之间的通信框架,方便地实现服务器组。数据库缓存Redis提供了更丰富的数据类型,使我们更容易缓存数据对象(序列化,protobufer)。要求某一数据时,先从Redis中查找,如果不再查数据库,同时交给Redis缓存。修改数据时,先将修改后的数据保存到Redis,再保存到数据库(2)。第二步可以有另一个想法:为了提高逻辑层的响应速度,A没有实时保存到数据库中,而是交给其他线程(甚至特殊程序)。B部分数据交给Redis保存(Redis本身具有持久功能),比如玩家已经完成的任务ID集合,更适合使用Redis的Set类型保存。C玩家瞬时变化的数据不一定需要每次修改都保存(比如金钱、经验),但是如果游戏服务器保持在内存中,停机会导致退货。Redis独立于游戏服务器,交给它保存,可以防止停机返回,减少游戏服务器维护数据占用的内存。

Redis在游戏服务器中的应用

 

转载于天翼云知识,如有侵权,请联系删除,谢谢

© 版权声明
广告也精彩

相关文章

广告也精彩

暂无评论

暂无评论...