暂无图片
暂无图片
暂无图片
暂无图片
暂无图片

分享一个删除redis中指定key模式的数据的shell脚本

小白懂编程 2017-09-09
208

分享一个删除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 $p -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。






 点下方“阅读原文”订阅 不迷失Java自学专栏


    


想自学Java想提高Java技术?来了解下不迷失Java技术专栏吧    





专注Java技术研究与教学培训,分享有价值的技术与经验,关注程序员的发展。|  知识改善生活


QQ交流群:245130488

个人博客:http://bumishi.cn


微信号:不迷失Java技术

英文ID:javajidi_com




文章转载自小白懂编程,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论