一:实现功能
通过shell脚本实现具体两个redis里的数据的拷贝
二:限制
1. 两个redis里的相同名称的存储结构会被跳过
如:如果两个redis里有相同的哈希表runoobkey,在执行脚本的时候会出现下面错误:
(error) BUSYKEY Target key name already exists.
2. 根据1的描述,不能实现类似将redis1的哈希表的key-value键值对添加到redis2的相同的哈希表中
三:脚本文件
#!/bin/bash
#redis 源ip
src_ip=192.168.110.4
#redis 源port
src_port=6379
#redis 源库
src_db=0
#redis 源密码
src_pw=123
#redis 目的ip
dest_ip=192.168.110.6
#redis 目的port
dest_port=6379
#redis 目的
dest_db=0
#redis 目的密码
dest_pw=456
redis-cli -h $src_ip -p $src_port -a $src_pw -n $src_db keys "runoob*" | while read key
do
redis-cli -h $src_ip -p $src_port -a $src_pw -n $src_db --raw dump $key | head -c-1 | redis-cli -h $dest_ip -p $dest_port -a $dest_pw -n $dest_db -x restore $key 0
echo "migrate key $key"
done
其中keys "runoob*"表示所有前缀是runoob的键的名称。
当前脚本的功能是将一个redis里指定数据库的所有前缀是runoob的键的数据拷贝到另一个redis的指定数据库