需求:
本redis机db0 数据复制 至 192.168.81 db5
#!/bin/bash
Db0keys=`/usr/local/redis/redis-cli -n 0 keys "*"`
for i in $Db0keys
do
echo $i
ttl=`/usr/local/redis/redis-cli -n 0 ttl "$i"|awk '{print $NF}'`
if [ $ttl == "-2" ];then
echo "$i $ttl "
echo "$i $ttl " >>/tmp/redisk.log
elif [ $ttl == "-1" ];then
echo "$i $ttl "
echo "$i $ttl " >>/tmp/redisk.log
else
echo "$i $ttl "
echo "$i $ttl " >>/tmp/redisk.log
/usr/local/redis/redis-cli -n 0 MIGRATE 192.168.0.81 6379 "" 5 5000 copy keys $i
/usr/local/redis/redis-cli -h 192.168.0.81 -p 6379 -n 5 expire $i $ttl
fi
done
说明:
复制key 与 值 至目标主机的db 5
/usr/local/redis/redis-cli -n 0 MIGRATE 192.168.0.81 6379 “” 5 5000 copy keys keyname
-n 0 | db 0 |
---|---|
“” | 密码为空 ,有就写 |
MIGRATE | 数据迁移工具 |
6379 | 端口 |
copy | 复制,可以为空,空值为move,本机会删除相应的key |
keyname | key |
5 | 目标 db 5 |
5000 | 超时时间 |
修改ttl值
/usr/local/redis/redis-cli -h 192.168.0.81 -p 6379 -n 5 expire $i $ttl
-h 192.168.0.81 -p 6379 -n 5 | 目标IP 端口 db |
---|---|
expire | 修改过期时间 |
注:
建议执行两遍,把上一次执行期间的发生的写入补上
--------------end