第一種方式,將一個庫中的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