shell指令碼redis操作--遍歷key儲存value
阿新 • • 發佈:2018-11-22
shell指令碼redis操作–遍歷key儲存value
shell指令碼redis操作
指令碼分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 '
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到檔案中
親測可用: