1. 程式人生 > 實用技巧 >scan模糊搜尋,並把搜尋結果刪除或者重新賦相同的值,redis批量刪除 批量更新

scan模糊搜尋,並把搜尋結果刪除或者重新賦相同的值,redis批量刪除 批量更新

#!/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