1、匯出redis
#!/bin/bashREDIS_HOST=localhostREDIS_PORT=6379REDIS_DB=1KEYNAME=redis:hash:*KEYFILE=key.txtecho "KEYS $KEYNAME" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB > $KEYFILEOUTFILE=valuelist.txtTEMPFILE=$OUTFILE.tmpecho > $TEMPFILEfor key in `cat $KEYFILE`do echo $key #echo "HGETALL $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE echo "GET $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILEdone
2、整理匯出的結果
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、匯入轉換的結果
cat $OUTFILE | redis-cli -h localhost -p 6379
二、直接用Redis的Dump和Restore匯出和匯入
redis-cli --raw dump test | head -c-1 | redis-cli -x restore test1 0