有很多场景,我们都需要删除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。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
2017-09-08 tomcat访问(access)日志配置、记录Post请求参数(转)