发文章
发文工具
撰写
网文摘手
文档
视频
思维导图
随笔
相册
原创同步助手
其他工具
图片转文字
文件清理
AI助手
留言交流
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是独立于游戏服务器的,交由它来保存,可以防止宕机回档的问题,也可以减少游戏服务器自己维护数据所占用的内存。
来自: 昵称10504424 > 《工作》
0条评论
发表
请遵守用户 评论公约
Java在游戏服务器开发中应用【面试+提高】
在逻辑服务器中对数据库的操作可以先放入一个Java队列中,再另起一个Java线程负责从这个队列取数据,并发送到数据库服务器,这就是使用J...
云风的 BLOG: 谈谈陌陌争霸在数据库方面踩过的坑(前篇)
服务器只是在不断的创造新数据并让这些数据在内存中流通而已,它没有任何需要从外部读取数据。游戏服务器需要把运营过程中的数据吐出,保存到可以处理这么大数据量的数据库中去。我们用 redis 保存玩家...
精通手游运维的架构体系
精通手游运维的架构体系。Memcached承载能力规划。手游发行商(运营商):即代理手游CP开发出来的手游产品,在部分渠道或者全渠道发行CP...
Java高级——缓存的使用场景
Java高级——缓存的使用场景。基本就是数据库里面啥样,我缓存也啥样,数据库里面有商品信息,缓存里面也放商品信息,唯一不同的是,数...
几点建议,让Redis在你的系统中发挥更大作用
几点建议,让Redis在你的系统中发挥更大作用。另一个大区别在于,你可以在开发环境中使用Redis的功能,但却不需要转到Redis。转向Redis当然也是可取的,许多开发者从一开始就把Redis作为首选数据库;在...
redis概述
redis持久化:RDB 每个几分钟,几小时,几天,生成redis内存中数据的一份完整的快照 redis持久化:AOF redis缓存雪崩 redis宕机,大量...
Redis能干啥?细看11种Web应用场景
Redis能干啥?【51CTO精选译文】在“怎样让Redis在你的系统中发挥作用”一文中,Salvatore ''antirez’ Sanfilippo告诉我们如何利用Redis独有的数据结构处理能力来解决一些常见问题。一些Redis...
数据库分库分表和带来的唯一ID、分页查询问题的解决
数据库分库分表和带来的唯一ID、分页查询问题的解决。3. 实现一个基本的分库分表的思路,将一台数据库服务器变成5台数据库,就能有5个库,5个表,这样可以将表中的数据按照ID分别通过同一个映射方法,...
PHP高级工程师面试题目
PHP高级工程师面试题目1、平时喜欢哪些php书籍及博客?能不能讲一下php执行原理? 5、php加速器有哪些?13、php的面向对象:类的修饰符、封装、继承、多态体现方面 14、php 多态是什么?15、Type Hintin...
微信扫码,在手机上查看选中内容