删除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 ]doecho
"cursor:${cursor}"sleep
2##将redis scan得到的结果赋值到变量
re
=$(redis-cli -h $host -p $port -c scan $cursor count 1000 match $pattern)##以换行作为分隔符
IFS
=$‘‘#echo $re
echo
‘arr=>‘##转成数组
arr
=($re)##打印数组长度
echo
‘len:‘${#arr[@]}##第一个元素是游标值
cursor
=${arr[0]}##游标为0表示没有key了
if [[ $cursor -eq 0 ]];thensignal
=1fi
##循环数组
for key in ${arr[@]}doecho $key
if [ $key != $cursor ];thenecho
"key:"$key##删除key
redis
-cli -h $host -p $port -c del $key >/dev/null2>&1fi
done
done
echo
‘done‘
使用方式:
./redis-del-keys.sh localhost 6379 user:*
表示删除本机6379端口的redis中user:开头的所以key。
删除redis中指定key模式的数据的shell脚本
原文:https://www.cnblogs.com/yinliang/p/13632821.html
以上是 删除redis中指定key模式的数据的shell脚本[操作系统入门] 的全部内容, 来源链接: utcz.com/z/519324.html