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文件
redis合库的更多相关文章
- 基于async/non-blocking高性能redis组件库BeetleX.Redis
BeetleX.Redis是基于async/non-blocking模式实现的高性能redis组件库,组件支持redis基础指令集,并封装更简便的List,Hashset和Subscribe操作.除了 ...
- 原!!win7-64 安装python的 redis客户端库
安装python的redis客户端库 本人系统已装python2.7 利用cmd命令行: 1.cmd-->python -->>>进入python命令下 >>> ...
- ArcGIS超级工具SPTOOLS-按属性裁剪,矢量数据批量裁剪,矢量数据批量合库
1.1 按属性裁剪 操作视频: https://weibo.com/tv/v/HwaZRoosq?fid=1034:4376687438183117 按属性裁剪:可以图形表,也可以是非图形表,字段值 ...
- golang操作redis/go-redis库
目录 Redis介绍 Redis支持的数据结构 Redis应用场景 准备Redis环境 go-redis库 安装 连接 普通连接 V8新版本相关 连接Redis哨兵模式 连接Redis集群 基本使用 ...
- Redis网络库源码分析(1)之介绍篇
一.前言 Redis网络库是一个单线程EPOLL模型的网络库,和Memcached使用的libevent相比,它没有那么庞大,代码一共2000多行,因此比较容易分析.其实网上已经有非常多有关这个网络库 ...
- php版的redis操作库predis操作大全
转载于:http://www.itxuexiwang.com/a/shujukujishu/redis/2016/0216/146.html predis是php连接redis的操作库,由于它完全使用 ...
- Redis事件库源码分析
由于老大在新项目中使用redis的事件库代替了libevent,我也趁着机会读了一遍redis的事件库代码,第一次读到“优美,让人愉快”的代码,加之用xmind制作的类图非常帅,所以留文纪念. Red ...
- SpringBoot如何切换Redis默认库
一些闲扯的话 我们清楚,Redis 尽管提供了 16 个索引库,但是每个数据库之间是隔离互不共享的,客户端默认连接使用的是 0 号数据库 . 注意:上方情况是基于单机 Redis 的,在集群模式下是没 ...
- CentOS 6.8下安装python的redis支持库
方法很简单,SSH登录下输入: pip install redis 或者 easy_install redis 如果上面的方法不行的话,就要尝试编译安装了 wget https://pypi.pyth ...
随机推荐
- Encapsulation.
Access control is often referred to as implementation hiding. Wrapping data and methods within class ...
- cocos2d-x学习之类型转换(转)
在做数据转换时,最好包含以下头文件 #include <iostream> #include <cmath> #include <string> #include ...
- c++primerplus(第六版)编程题——第5章(循环和关系表达式)
声明:作者为了调试方便,每一章的程序写在一个工程文件中,每一道编程练习题新建一个独立文件,在主函数中调用,我建议同我一样的初学者可以采用这种方式,调试起来会比较方便. (具体方式参见第3章模板) 1. ...
- 读书笔记之 - javascript 设计模式 - 组合模式
组合模式是一种专为创建Web上的动态用户界面而量身定制的模式,使用这种模式,可以用一条命令在对各对象上激发复杂的或递归的行为. 在组合对象的层次体系中有俩种类型对象:叶对象和组合对象.这是一个递归定义 ...
- xml程序 个人练习1
package cn.gdpe.xml2; import java.io.File;import java.io.FileOutputStream;import java.util.List; imp ...
- DOM对象控制HTML无素——详解1
getElementsByName()方法 返回带有指定名称的节点对象的集合. 语法: document.getElementsByName(name) 与getElementById() 方法不同的 ...
- dedecms 常用标签调用
/*------------------单个ip调用-------------------*/ {dede:type typeid="12"} <a title=" ...
- Laravel框架——自己写的类找不到
composer.json my model files are stored in directory of app\models, therefor "autoload": { ...
- 转:.NET中使用Redis (一)
原文来自于:http://blog.jobbole.com/83821/ 原文出处: 寒江独钓 欢迎分享原创到伯乐头条 Redis是一个用的比较广泛的Key/Value的内存数据库,新浪微博.Gi ...
- BZOJ 1006 神奇的国度
Description K国是一个热衷三角形的国度,连人的交往也只喜欢三角原则.他们认为三角关系:即AB相互认识,BC相互认识,CA相互认识,是简洁高效的.为了巩固三角关系,K国禁止四边关系,五边关系 ...