脚本分2部,redis查询出所需要的key,然后遍历key查询出所有的value追加到文件中;
(**想法:**本来是要循环遍历满足条件key的结果集的,但是失败了,所有就直接保存到文件中,读取文件每一行的结果,用这个结果查询value保存到新文件中;
**进一步优化:**因为key的type不同的原因,所有其实可以选用 type $key,来判断key的类型,从而选用不同命令查询value)
查询redis结果保存文件
echo “keys ‘’” | redis-cli -h ‘127.0.0.1’ -p 6379 -a ‘password’ > /tmp/allkeys.txt
keys '’ 是redis语句
shell
shell脚本变量或者字符串连接直接写在一起
shell文件读取:
for line in cat file(待读取的文件)
do
echo $line
done
文件追加用: >>
文件覆盖用: >
整个脚本如下:
1 #!/bin/bash
2 filename='redis'`date +%Y-%m-%d`
3 echo '实例化redis数据文件为:/tmp/'$filename
4 echo "keys '*'" | redis-cli -h '127.0.0.1' -p 6379 -a 'password' > /tmp/al lkeys.txt
5 echo "将所有的key保存到/tmp/$filename.txt文件中"
6 for line in `cat /tmp/allkeys.txt`
7 do
8 echo "key: "$line >>/tmp/$filename.txt
9 echo "key-value:" >>/tmp/$filename.txt
10 echo "get $line" | redis-cli -h '127.0.0.1' -p 6379 -a 'password' >>/tmp/$filename.txt
11 done
解释一下:
2行:定义保存文件名
4行:保存需要的key结果到文件
6行:循环读取满足条件的key文件,按行读取
8行:在文件中同时写入key,
10行:写入key的value到文件中