1. 程式人生 > >批量刪除redis特殊鍵值

批量刪除redis特殊鍵值

#!/usr/bin/env bash
#定義redis 叢集陣列
cluster=("master" "node1" "node2")
#定義redis叢集例項開放埠
port=(7000 7001 7002)
#獲取指定型別鍵值的資料
function count(){
 count=0
 while read LINE
 do
   ((count=count+1))
 done < PVKEYS.txt
 echo "pvid 的數量為: $count"
}
#呼叫redis刪除命令刪除redis多餘鍵值的資料
function del(){
 while read LINE
 do
  var=`echo
$LINE | awk -F ' ' '{print $2}'` redis-cli -h master -p 7000 -c del $var done < PVKEYS.txt } #刪除出正確的pvid資料 function selector(){ while read LINE do #echo $LINE var=`echo $LINE | awk -F ' ' '{print $1}'` #echo ${#var} if [ ${#var} -eq 15 ];then echo $var >> PVKEYS.txt else echo $var
fi done < keys.txt } #獲取redis中所有的key值 function getKeys(){ for j in ${port[@]} do for k in ${cluster[@]} do echo "keys *" | redis-cli -h ${k} -p ${j} -c >>keys.txt done done } #生成批處理命令 function command(){ while read LINE do echo "del $LINE" >>command.txt done
< PVKEYS.txt } #利用redis pipeline刪除資料 function commandDel(){ cat command.txt | redis-cli -h master -p 7000 -c } function delTxt(){ rm -rf keys.txt rm -rf PVKEYS.txt rm -rf command.txt } #根據字首刪除 function delByPrefix(){ cat "redis-cli -h master -p 7000 -c -n 0 keys * | xargs redis-cli -h master -p 7000 -c -n 1 del " } #刪除生成的中間檔案 delTxt #第一步,首先獲取所有的redis鍵值 getKeys #第二部,對keys值進行篩選 selector #第三部 呼叫函式刪除redis中的資料 # del #生成批命令語句 command #呼叫批處理命令刪除 commandDel #呼叫指令碼獲取pvid鍵值的數量 #count