RJ博客

Redis迁移记录

本文目录

由于业务需要,要把业务迁移到另一家服务商,其中涉及到:

1) 服务器代码迁移

2) MySQL迁移

3) Redis迁移

其中服务器代码和MySQL就不说了,主要说一下Redis的迁移。

目前有3种方案供选择: 

1) 第三方工具redis-dump、redis-load实现

2) 通过aof机制导入导出,需要开启aof功能

3) 通过rdb存储机制迁移数据,此方法最为简单,直接dump $key、restore $key即可


结合业务,由于Redis需要由原来的3台实例扩展到5台实例,而原先缓存到Redis的数据是按key取模的,因此需要考虑重新取模入库,所以这里最终选择了方案1,借助redis-dump工具,因为redis-dump导出的是json数据,方便取模操作,redis原生取模规则如下:

echo 'redis:', bcmod(sprintf('%u', crc32($key)), $hostNum), PHP_EOL;

数据格式如下图所示 ( redis-dump安装参考文末链接地址 ) :

image.png

有以下两种方案:

1) 对json文件提前取模分成5个文件,然后直接在5个实例上分别redis-load导入

    - 优点1: 不用设置ttl

    - 优点2: 不用管缓存存储类型

2) 写个PHP脚本直接操作json文件,把数据取模写入到redis实例中

 

由于数据量不大,最后采取了方案2。如果数据量大的话理论上方案1更优更省力(没有实践过)


redis测试迁移步骤拆解及完整数据如下:

导出: 17:25 (17分钟)

过滤: 17:26 (1分钟)

压缩: 17:27 (1分钟)

下载: 17:28 (文件50M) (1分钟)

上传: 17:30 (2分钟)

解压: 17:31 (1分钟)

导入: 17:36 (5分钟)



Refer:

http://blog.51cto.com/wangtianci/2093525

https://www.jb51.net/article/57066.htm


相关推荐

发表评论