不同服务器的redis,按指定pattern同步

1、按指定pattern同步

#!/bin/bash
REDIS_HOST=IP1
TEST_HOST=IP2
TEST_PASSWD=23NxG9z3Tx6r7XOU8odx
REDIS_PORT=6379
REDIS_DB=0 
KEYNAME=CONFIG:FLIGHT:*
KEYFILE=key.txt
#redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB keys "CONFIG:FLIGHT:*" > $KEYFILE keys #这种遍历会造成阻塞,对于生产机不太适用
redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB --scan --pattern "CONFIG:FLIGHT:*" > $KEYFILE

OUTFILE=valuelist.txt
TEMPFILE=$OUTFILE.tmp
#echo > $TEMPFILE
for key in `cat $KEYFILE`
do
    echo $key
    echo "HGETALL $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB | xargs -n 2 |awk -F" " -v KEYNAME=$key '{print "HSET "KEYNAME " " $1, "\""$2"\""}' >> $TEMPFILE
done

#insert into
cat $TEMPFILE | redis-cli -a $TEST_PASSWD -h $TEST_HOST -p $REDIS_PORT

2、导出导入指定key

#!/bin/bash
KEY=ZZZ
PASSWD=1111
IP=1.1.1.1
IP2=1.1.1.2
PORT=6379
#导出指定key
redis-cli -a $PASSWD -h $IP -p $PORT --raw dump $KEY| head -c-1 > dump.raw
#导入指定key
cat dump.raw | redis-cli -a $PASSWD -h $IP2 -p $PORT -x restore $KEY 0

注意:

  1. 如果没有设置redis密码可以不用-a $PASSWD
  2. 如果是操作本地redis可以不用-h $IP
  3. restore $KEY 0 这里的0表示:不设置KEY的生存时间
  4. 没有指定-n redis库(0-15),默认0

REDIS命令大全:http://doc.redisfans.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值