`
vanadiumlin
  • 浏览: 492529 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

edis在游戏服务器中的应用

 
阅读更多
edis在游戏服务器中的应用

Agent`K 最近在使用Redis,忽然发现以前很多费神的事情都迎刃而解了,又应了经典:我们要做的99%的事情,别人都早已做过了!


(扫盲:Redis是内存型、键值对型数据库,独立运行,不是第三方库)


排行榜
游戏服务器中涉及到很多排行信息,比如玩家等级排名、金钱排名、战斗力排名等。
一般情况下仅需要取排名的前N名就可以了,这时可以利用数据库的排序功能,或者自己维护一个元素数量有限的top集合。
但是有时候我们需要每一个玩家的排名,玩家的数量太多,不能利用数据库(全表排序压力太大),自己维护也会比较麻烦。
使用Redis可以很好的解决这个问题。它提供的有序Set,支持每个键值(比如玩家id)拥有一个分数(score),每次往这个set里添加元素,
Redis会对其进行排序,修改某一元素的score后,也会更新排序,在获取数据时,可以指定排序范围。
更重要的是,这个排序结果会被保存起来,不用在服务器启动时重新计算。
通过它,排行榜的实时刷新、全服排行都不再成为麻烦事。


消息队列(可跨服)
Redis提供的List数据类型,可以用来实现一个消息队列。
由于它是独立于游戏服务器的,所以多个游戏服务器可以通过它来交换数据、发送事件。
Redis还提供了发布、订阅的事件模型。
利用这些,我们就不必自己去实现一套服务器间的通信框架,方便地实现服务器组。


数据库缓存
Redis提供了较为丰富数据类型,使我们可以更为容易地将数据对象缓存起来(序列化、protobuffer)。
当需要请求某一数据时,先从Redis中查找,如果没有再查数据库,同时交给Redis缓存起来。
当对数据进行修改时,则先将修改后的数据保存到Redis,然后保存至数据库(2)。
第2步可以有另外的思路:
A不实时保存到数据库,而是交由另外的线程(甚至是专门的程序)去保存,以提高逻辑层的响应速度。
B部分数据交给Redis保存(Reids自身有持久化功能),像玩家已经完成过的任务ID集合,利用Redis的Set类型保存更为合适。
C玩家瞬时变化的数据不见得每次修改都需要保存(比如金钱、经验),但如果游戏服务器自己维护在内存中,出现宕机就会导致回档。
Redis是独立于游戏服务器的,交由它来保存,可以防止宕机回档的问题,也可以减少游戏服务器自己维护数据所占用的内存。
分享到:
评论

相关推荐

    [其他类别]安脉学生信息管理系统_edis_anmai.zip

    源码参考,欢迎下载

    [其他类别]安脉学生信息管理系统_edis_anmai(ASP.NET源码).rar

    [其他类别]安脉学生信息管理系统_edis_anmai(ASP.NET源码).rar

    edis:Redis的Erlang实现

    如果在使用此库时发现任何错误或有问题,请在此存储库中(或拉取请求:))。 您可以在检查我们所有的开源项目。 用法 只需运行$ make run并打开与您最喜欢的redis客户端的连接。 与Redis的差异 不同的行为 SAVE , ...

    edis:[不支持] 一个简单的 C 跨平台 IDE

    # Edis-IDE ...在代码中查找和替换单词 ... 和更多 平台 GNU/Linux 视窗 执行 ###预要求 Python 3.x PyQt4 QScintilla 标签 下载源代码或克隆存储库: git clone https://github.com/centaurialph

    [其他类别]安脉学生信息管理系统_edis_anmai.zip源码ASP.NET网站源码打包下载

    [其他类别]安脉学生信息管理系统_edis_anmai.zip源码ASP.NET网站源码打包下载[其他类别]安脉学生信息管理系统_edis_anmai.zip源码ASP.NET网站源码打包下载[其他类别]安脉学生信息管理系统_edis_anmai.zip源码ASP.NET...

    redis-desktop-manager-2020.3.zip

    Redis桌面管理器(又名RDM) -是一个可以应用于Windows, Linux和MacOS操作系统的快速开源的Redis数据库管理应用程序。这个工具为你提供了一个易于使用的GUI来访问你的Redis数据库和执行一些基本的操作:以树的模式查看...

    程序源码 安脉学生信息管理系统_edis_anmai(ASP.NET源码).rar

    免责声明:资料部分来源于合法的互联网渠道收集和整理,部分自己学习积累成果,供大家学习参考与交流。收取的费用仅用于收集和整理资料耗费时间的酬劳。 本人尊重原创作者或出版方,资料版权归原作者或出版方所有,...

    .net抽象缓存工厂redis、httpruntime

    .net抽象缓存工厂redis、httpruntime,含代码示例,可直接使用,Framework4.5

    redis-desktop-manager可视化桌面管理工具

    redis图形化管理工具 redis desktop manage 在win上管理你的redis

    edis内部数据结构详解之字典(dict)

    本文所引用的源码全部来自Redis2.8.2版本。...STL中的map,STL中的map是用red-blacktree实现的,因为map不仅能够保证key不重复,而且key还是按照字典序存储的,而Redis中的字典并不要求有序,因此为了降低编码

    redis入门指南

    edis入门指南

    redis 存储系统

    edis是一个key-value存储...与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    redis-desktop-manager-0.9.3.817.exe.zip

    Redis Desktop Manager – 个人认为是目前最好用的Redis可视化管理工具。 redis可视化工具、Redis可视化管理工具、redis图形化管理工具、redis可视化客户端、redis集群管理工具

    redis-desktop-manager-0.9.3.817.exe

    linux系统中mysql数据库,redis分布式内存数据库,tomcat服务器以及jdk的安装包,以及安装配置步骤

    redis 缓存技术学习笔记

    edis是一个key-value存储...与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    【redis教程】12、redis中过期数据的删除策略

    redis是一种内存级的数据,所有数据均放在内存中,内存中的数据可以通过ttl指令获取其状态, xx:具有时效性的数据 -1:永久有效的数据 -2:已经过期的数据 或 被删除的数据 或 未定义的数据 对于过期的数据要redis...

    redis-x64-3.2.1

    edis是一个key-value存储...与memcached一样,为了保证效率,数据都是缓存在内存中。区别的是redis会周期性的把更新的数据写入磁盘或者把修改操作写入追加的记录文件,并且在此基础上实现了master-slave(主从)同步。

    最新版windows Redis-x64-5.0.14.zip

    最新版windows Redis-x64-5.0.14.zip最新版windows Redis-x64-5.0.14.zip

Global site tag (gtag.js) - Google Analytics