第一种方式,将一个库中的Key复制到另一个库中:
#!/bin/bash #redis 源ip src_ip=192.168.0.1 #redis 源port src_port=6379 #redis 源库 src_db=11 #redis 目的ip dest_ip=192.168.0.1 #redis 目的port dest_port=6379 #redis 目的 dest_db=6 #redis 密码 pw=123456 #要迁移的key前缀 #key_prefix=com.example.test redis-cli -h $src_ip -p $src_port -a $pw -n $src_db keys "*" | while read key do redis-cli -h $src_ip -p $src_port -a $pw -n $src_db --raw dump $key | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a $pw -n $dest_db -x restore $key 0 echo "migrate key $key" done
第二种方式,复制其中某些Key值迁移:
#!/bin/bash #redis 源ip src_ip=192.168.0.1 #redis 源port src_port=6379 #redis 源库 src_db=1 #redis 目的ip dest_ip=192.168.0.1 #redis 目的port dest_port=6379 #redis 目的 dest_db=3 #redis 密码 pw=123456 #要遍历的key k=(medical_record:id medical_record_attachment:id patient_family_present:id patient_present:id patient_disease:id family_disease:id patient_allergy:id history_allergy:id) #要迁移的key前缀 #key_prefix=com.example.test for loop in ${k[*]} do redis-cli -h $src_ip -p $src_port -a $pw -n $src_db --raw dump $loop | perl -pe 'chomp if eof' | redis-cli -h $dest_ip -p $dest_port -a $pw -n $dest_db -x restore $loop 0 echo "The value is: $loop" done