posts - 299,comments - 31,views - 61万

参考:

https://www.codeleading.com/article/17355713942/

前提:

源实例与目标实例版本需要一致

#复制一个库的全部key

redis-all-key.sh

复制代码
#!/bin/bash
src_ip=127.0.0.1
src_port=8090
src_db=14
src_pw='1234'
 
dest_ip=127.0.0.1
dest_port=8090
dest_db=15
desc_pw='1234'
 
redis-cli -h $src_ip -p $src_port  -a $src_pw  -n $src_db keys "*" | while read key
do
    redis-cli -h $src_ip -p $src_port -a $src_pw  -n $src_db --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a $desc_pw -n $dest_db -x restore $key 0
    echo "migrate key $key"
done
复制代码

#复制一个库的部分key

迁移源redis 11库名称为“EXIST_IP”的key数据

复制代码
#!/bin/bash
src_ip=122.226.xx.xxx
src_port=6379
src_db=0
src_pw='iMxxxx'
dest_ip=47.241.xx.xxx
dest_port=6379
dest_db=11
desc_pw='0*7xxxxx'
#要遍历的key
k=(EXIST_IP)
for loop in ${k[*]}
do
    redis-cli -h $src_ip -p $src_port -a $src_pw -n $src_db --raw dump $loop | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a $desc_pw -n $dest_db -x restore $loop 0
    echo "The value is: $loop"
done
复制代码

#只复制一个key

redis-cli -h 127.0.0.1 -p 8090 -a 1234 -n 14 --raw dump test | perl -pe 'chomp if eof' | redis-cli -h 127.0.0.1 -p 8090 -a 1234 -n 15 -x restore test 0

-h hostip,

-p 端口,

-a 密码,

-n db库,

--no-raw选项是要求命令的返回结果必须是原始的格式,

--raw恰恰相反,返回格式化后的结果,

-x 选项代表从标准输入(stdin)读取数据

perl -p(perl 命令可自行百度) 使 Perl 隐式地循环遍历指定的文件,同时打印所有的行。自动循环+自动输出,相当于 while(<>) { 脚本; print; }

 

源实例与目标实例版本不相同,使用migrate进行迁移的时候会有如下错误

1935 migrate key esf_common_auth_code_18587656289
(error) ERR Target instance replied with error: ERR DUMP payload version or checksum are wrong

 

posted on   小油2018  阅读(696)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
历史上的今天:
2019-06-15 Serv-U无法上传“中文文件夹”的问题(没有权限)
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

点击右上角即可分享
微信分享提示