刪除redis中指定key模式的數據的shell腳本


有很多場景,我們都需要刪除redis中某些具有相似特征的key,即使是線上環境也是。如果key數量很小容易處理,如果這些key很多很多,必須通過scan命令循環掃描一一刪除,如果直接執行keys命令會堵死redis服務。下面這個腳本就是通過循環掃碼key再刪除,直至結束。

redis-del-keys.sh

#!/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
                ##刪除key
                redis-cli -h $host -p $port -c del $key >/dev/null  2>&1
            fi
    done
done
echo 'done'

使用方式:

./redis-del-keys.sh localhost 6379 user:*

表示刪除本機6379端口的redis中user:開頭的所以key。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM