zoukankan      html  css  js  c++  java
  • redis合库

    玩家数据全部保存在redis,对合服来绝对是个坑。因为一直都是做开发,合库这事还是第一次操作。

          首先,合服要做哪些事情,当然不同的游戏肯定不一样。合服的目的是为了增加同个服务器上活跃玩家的数量。合服有另外一种叫法数据互通,按这种理解就是要合并的那几个服务器,玩家可以进行交互,主要指排行榜数据和一下全服玩法。数据互通很明显前端的入口是不变的。有一个问题就是要合并的服务器,同个玩家不同角色的数据是否要删除。这次合并是按照不删除的做法进行的。这个根据不同的游戏采取不同的策略。

    其次,数据合并。这次比较幸运的一点是,之前的技术对玩家id的处理上是唯一的,包括不同服务器的玩家id也是不一样的。现在进入主题redis的合并。

          redis是有持久化功能的内存数据库。它有两种持久化方式:1.rdb快照;2.aof扩展。第一步就去搜索如何合并两个rdb,有看到一个文章说只要二进制打开rdb文件,去掉一个rdb的尾,另一个的头,然后合并它们的内容。反正按照这个方法我没有成功。后面就放弃了rdb转而寻找合并aof的方法。

          aof是以协议文本的方式,将所有对数据库进行过写入的命令及参数记录到aof文件,aof文件是一个文本文件,要合并两个aof文件是很方便的事情。cat a.aof >> b.aof就搞定。这里会有个问题因为是把a的aof文件追加到b中,如果a和

    b有一样的key时,a的值会覆盖b的值。这一部分要根据需求特殊处理下,要么在合并前要保证没有一样的key。否则,就会造成数据丢失。

          现在的问题是我们如何得到一个完整的aof文件,redis提供了一个命令:BGREWRITEAOF,执行之后会生成一个完整的aof文件。

    最后一步就是要让redis实例读取合并后的aof文件。

    新建一个redis实例,修改redis配置文件

    appendonly yes  //开启aof选择

    appendfilename appendonly.aof //合并后的aof文件

  • 相关阅读:
    Python之旅.第九章.并发编程.
    Python之旅.第九章.并发编程。
    Python之旅.第九章.并发编程..
    Python之旅.第九章.并发编程
    Python之旅.第九章.并发编程
    animate.css
    JS对于Android和IOS平台的点击响应的适配
    腾讯设计导航
    炫酷照片墙----------------网站也不错的样子
    判断设备是电脑还是手机
  • 原文地址:https://www.cnblogs.com/zhenzi/p/4292635.html
Copyright © 2011-2022 走看看