1. 程式人生 > >shell指令碼redis操作--遍歷key儲存value

shell指令碼redis操作--遍歷key儲存value

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 '

’ 是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到檔案中
親測可用:

在這裡插入圖片描述
在這裡插入圖片描述