一、從db0到db1
將redis數據從db0拷貝到db1,可以使用下面腳本進行復制
REDIS_CLI=/usr/local/redis/bin/redis-cli
host=redis_host
port=redis_port
password=redis_password
old_base=0
new_base=1${REDIS_CLI} -h ${host} -p ${port} -a ${password} -n $old_base keys "*" | while read key
do${REDIS_CLI} -h ${host} -p ${port} -a ${password} -n $old_base --raw dump $key | perl -pe 'chomp if eof' | ${REDIS_CLI} -h ${host} -p ${port} -a ${password} -n ${new_base} -x restore $key 0echo "migrate key $key"
done
二、拷貝到其它redis服務器
1、確認兩臺服務器上的redis版本
在兩臺服務器上都執行該命令
[root@localhost redis]# redis-server --version
Redis server v=7.2.5 sha=00000000:0 malloc=jemalloc-5.3.0 bits=64 build=aee76b2adac9c350
2、拷貝rdb文件到另一臺服務器
確認版本一致后,拷貝rdb文件。
rdb文件路徑可以通過配置文件查看,也可以通過命令查看
# 配置文件
vi redis.conf
## 查找下面內容
dbfilename ""# 命令
192.168.140.159:6379> config get dir
1) "dir"
2) "/opt/redis"
192.168.140.159:6379> config get dbfilename
1) "dbfilename"
2) "dump.rdb"# 保存一下數據,確保數據是全的
# rdb模式下,redis間隔一段時間才會將數據寫入disk
192.168.140.159:6379> save
3、重啟redis服務
# 1、停止redis服務
systemctl stop redis# 2、備份老的rdb文件
mv dump.rdb dump_bak.rdb# 3、將新的文件拷貝到redis工作目錄下# 4、啟動服務
systemctl start redis
4、檢查數據是否正確
# 列出所有key
192.168.140.158:6379> keys *
# 查看key的總數,確認兩邊是否一致
192.168.140.158:6379> dbsize