整理一下经常使用的几种redis迁移的方案,分别对应不一样的场景。php
- 备份/拷贝/重启
- redis-dump
- 客户端
利用redis的持久化功能,redis重启的时候,会自动从硬盘的持久化文件中读取数据再恢复到内存中。利用这里原理,把redis2的持久化备份
替换成redis1的,而后重启redis2,它就会从硬盘持久化文件恢复到内存,这样一来redis2就跟redis1同样了
要使用这个方案,就必须了解redis的持久化,redis的持久化方案有2种,rdb模式和aof模式:git
rdb
覆盖过去以后,新的redis数据就没了,毕竟是覆盖操做。而aof
由于是保存的命令,只是在新的redis上从新执行了一遍,因此不会覆盖
新redis上的数据。 简单来讲若是须要保留新redis的数据,可使用aof
。github
rdb方案
# 连接redis $ redis-cli -u 127.0.0.1 -p 6379 -a 你的密码 # 执行持久化 $ 127.0.0.1:6379> bgsave # 查看文件位置 $ 127.0.0.1:6379> config get dir
复制 redis数据目录/dump.rdb
到另外一台redis的数据目录下,启动便可。redis
ps:先关闭目标redis,先复制文件的话,在目标redis关闭的时候,会生成持久化文件,覆盖你刚刚复制的文件
aof
# 设置appendonly yes $ 127.0.0.1:6379> config set appendonly yes # or $ redis-cli -u 127.0.0.1 -p 6379 -a 你的密码 config set appendonly yes
执行以后,就会在 redis的数据目录
看到 appendonly.aof
文件json
# 目标redis $ redis-cli -h aliyun_redis_instance_ip -p 6379 -a password --pipe < appendonly.aof
redis-dump是一个第三方的工具,提供redis的导出和导入。
安装rvm。可参考官网:http://rvm.io/ruby
# gpg2 没安装的化自行安装 `apt install gnupg2` $ gpg2 --recv-keys 409B6B1796C275462A1703113804BB82D39DC0E3 7D2BAF1CF37B13E2069D6956105BD0E739499BDB $ \curl -sSL https://get.rvm.io | bash -s stable # 按照系统提示执行,添加系统环境 $ source /etc/profile.d/rvm.sh # 确认安装成功 $ rvm list known
安装ruby 参考官方网站:http://www.ruby-lang.org/en/d...bash
# ruby版本参考官方发行的最新版,本搞写的时候版本为2.6.3 $ rvm install ruby 2.6.3
安装 redis-dump
app
# 移除国外的库,否则下载不了 $ gem sources --remove https://rubygems.org/ # 安装国内的资源地址 $ gem sources -a https://gems.ruby-china.com/ # 安装 $ gem install redis-dump -V
# 导出全部db $ redis-dump -u 127.0.0.1:6371 > db_full.json # 导出db15 $ redis-dump -u 127.0.0.1:6371 -d 15 > db_db15.json # 导入 $ < db_full.json redis-load -u 127.0.0.1:6379 $ < db_db15.json redis-load -u 127.0.0.1:6379 -d 15 # OR $ cat db_full | redis-load $ cat db_db15.json | redis-load -d 15 # 使用密码的小技巧(注意密码前面的`:`) $ redis-dump -u :密码@127.0.0.1:6371
使用
phpredisadmin
等客户端,自带导入、导出
git库 https://github.com/ErikDubbel...curl
Example: http://dubbelboer.com/phpRedi...工具
功能截图: