1、导出redis
[plain] view plain copy
-
#!/bin/bash
-
REDIS_HOST=localhost
-
REDIS_PORT=6379
-
REDIS_DB=1
-
-
-
KEYNAME=redis:hash:*
-
KEYFILE=key.txt
-
echo "KEYS $KEYNAME" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB > $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 >> $TEMPFILE
-
echo "GET $key" | redis-cli -h $REDIS_HOST -p $REDIS_PORT -n $REDIS_DB >> $TEMPFILE
-
done
2、整理导出的结果
[plain] view plain copy
-
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
-
cat $OUTFILE | redis-cli -h localhost -p 6379