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

分享一个删除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技术

2017-08-24-qrcode_for_gh_94c58645c7e8_344.jpg

专注为Java爱好者提供系统的教学及指导,分享有价值的技术与经验,关注程序员的发展

技术专栏:

2017-09-04-xcx.png


版权声明:本文为weixin_34365042原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。