删除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 $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 ]];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/null2>&1

fi

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

回到顶部