且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

shell导出和导入redis

更新时间:2022-09-01 17:04:21

1、导出redis


[plain] view plain copy

  1. #!/bin/bash  

  2. REDIS_HOST=localhost  

  3. REDIS_PORT=6379  

  4. REDIS_DB=1  

  5.   

  6.   

  7. KEYNAME=redis:hash:*  

  8. KEYFILE=key.txt  

  9. echo "KEYS $KEYNAME" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB > $KEYFILE  

  10.   

  11.   

  12. OUTFILE=valuelist.txt  

  13. TEMPFILE=$OUTFILE.tmp  

  14. echo > $TEMPFILE  

  15. for key in `cat $KEYFILE`  

  16. do  

  17.     echo $key  

  18.     #echo "HGETALL $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE    

  19.     echo "GET $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE  

  20. done  



2、整理导出的结果


[plain] view plain copy

  1. cat $TEMPFILE|xargs -n 2|awk -F" " -v KEYNAME=$KEYNAME '{print "HSET "KEYNAME " " $1, "\""$2"\""}' > $OUTFILE  

其中的xargs -n 2是把2行合成一行,换行符用空格代替


然后用awk按空格分开,$1是keynam $2是key的值

再次转换成HSET的格式,其中用到KEYNAME变量,这个要用-v预先定义。

最后转化为 HSET KEYNAME KEY "VALUE"格式。


3、导入转换的结果


[plain] view plain copy

  1. cat $OUTFILE | redis-cli -h localhost -p 6379  










本文转自 chengxuyonghu 51CTO博客,原文链接:http://blog.51cto.com/6226001001/1743455,如需转载请自行联系原作者