游戏服务器缓存redis 大致作用

作者: Golang语言社区 | 来源:发表于2018-12-06 11:30 被阅读110次

对于游戏开发而已,选择MySQL作为数据存储服务器无疑是理智的选择,一方面是整体相较Orcle和SQL Server更加轻量级,另一方面是已有很多成熟的封装类库可以使用,无需编写太多数据库操作代码。

    处理这种永久性的数据存储数据库之外,还有另外一种用于内存缓冲的数据库,具备存取效率极高,但丢失几率相比前类服务器要高一些,主要用于需要快速操作数据,且不造成数据库死锁的方案,最常用的有Redis。存储过程大致如下:将需要频繁和快速操作的数据存储在Redis数据库(内存缓冲),然后定时从Redis将数据回写到MySQL数据库中。

排行榜
游戏服务器中涉及到很多排行信息,比如玩家等级排名、金钱排名、战斗力排名等。
一般情况下仅需要取排名的前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是独立于游戏服务器的,交由它来保存,可以防止宕机回档的问题,也可以减少游戏服务器自己维护数据所占用的内存。


社区交流群:221273219
Golang语言社区论坛 :
www.Golang.Ltd
LollipopGo游戏服务器地址:
https://github.com/Golangltd/LollipopGo
社区视频课程课件GIT地址:
https://github.com/Golangltd/codeclass


Golang语言社区

相关文章

  • 游戏服务器缓存redis 大致作用

    对于游戏开发而已,选择MySQL作为数据存储服务器无疑是理智的选择,一方面是整体相较Orcle和SQL Serve...

  • Web 缓存

    Web 缓存的作用与类型 数据库缓存memcached redis 服务端缓存代理服务器缓存squidCDN缓存(...

  • HTTP缓存原理

    一 前言 Web缓存大致可以分为:数据库缓存,服务器缓存(代理服务器缓存,CND缓存),浏览器缓存。而浏览器的缓存...

  • HTTP缓存

    Web 缓存大致可以分为:数据库缓存、服务器端缓存(代理服务器缓存、CDN 缓存)、浏览器缓存。 浏览器缓存也包含...

  • HTTP缓存机制

    简介 web缓存大致可以分为:数据库缓存,服务器端缓存(代理服务器缓存,CDN缓存),浏览器缓存。浏览器缓存也包含...

  • HTTP缓存机制 & cookie/localStorage/s

    web缓存大致可以分为:数据库数据缓存、服务器端缓存(代理服务器缓存、CDN缓存)、浏览器端缓存、web应用层缓存...

  • Redis缓存,持久化,高可用

    一,Redis作缓存服务器 ​ ​ redis作为缓存服务器是众多企业中的选择之一,虽然该技术很成熟但也是存在一定...

  • SpringBoot2.x—代码实现多级缓存

    Redis作为分布式缓存,性能是比较好的。但服务器会严重依赖Redis服务,且每次请求都会查询Redis获取缓存内...

  • 缓存机制全面整理(重点梳理本地缓存和浏览器缓存)

    缓存大致可以分为以下几类: 1:本地缓存(应用层缓存)2:浏览器缓存(HTTP缓存)3:CDN缓存4:代理服务器缓...

  • 缓存

    小弟不才,今天发现一个新大陆:缓存 缓存可以分为服务器缓存,第三方缓存(ehcache),分布式缓存(redis,...

网友评论

    本文标题:游戏服务器缓存redis 大致作用

    本文链接:https://www.haomeiwen.com/subject/orwncqtx.html