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

posted @ 2020-09-17 17:55  --鲲鹏展翅--  阅读(301)  评论(0编辑  收藏  举报