scan模糊搜尋,並把搜尋結果刪除或者重新賦相同的值,redis批量刪除 批量更新
阿新 • • 發佈:2020-09-17
#!/bin/bash ##redis主機IP host=$1 ##redis埠 port=$2 ##key模式 pattern=$3 ##遊標 cursor=0 ##退出訊號 signal=0 ##迴圈獲取key並刪除 while [ $signal -ne 1 ] do echo "cursor:${cursor}" sleep 2 ##將redis scan得到的結果賦值到變數 re=$(redis-cli -h $host -p $port -c scan $cursor count 1000 match $pattern) ##以換行作為分隔符 IFS=$'\n' #echo $re echo 'arr=>' ##轉成陣列 arr=($re) ##列印陣列長度 echo 'len:'${#arr[@]} ##第一個元素是遊標值 cursor=${arr[0]} ##遊標為0表示沒有key了 if [[ $cursor -eq 0 ]];then signal=1 fi ##迴圈陣列 for key in ${arr[@]} do echo $key if [ $key != $cursor ];then echo "key:"$key ##批量把值設定為10,批量設定請把批量刪除的註釋掉 redis-cli -h $host -p $port -c set $key 10 >/dev/null 2>&1 ##批量刪除key,批量刪除請把批量設定的註釋掉
redis-cli -h $host -p $port -c del $key >/dev/null 2>&1 fi done done echo 'done'
使用方式:
./redis-batch-keys.sh localhost 6379 aaa*
表示刪除本機6379埠的redis中aaa開頭的所有key 或者 批量設定本機6379埠的redis中aaa開頭的所有key的值為10