sh scantodel.sh *pattern* 127.0.0.1 6379 0 5000 1
scantodel.sh文件如下
参数1是需要删除key的匹配字符串
参数2是redis的host
参数3是redis的端口
参数4是redis的db
参数4是每次删除的个数
参数6是每次批量删除的间隔秒数,支持小数
脚本执行的linux必须安装有redis客户端
#!/bin/bash
if [ "$#" -lt 3 ]
then
echo "Scan keys in Redis matching a pattern using SCAN (safe version of KEYS)"
echo "Usage: $0 [pattern] <host> [port] [database] [count] [second]"
exit 1
fi
pattern=${1:-}
host=${2:-}
port=${3:-6379}
database=${4:-0}
count=${5:-5000}
second=${6:-1}
if [ ! -n "$pattern" ] ;then
echo "pattern shoud not be empty!"
fi
cursor=-1
keys=''
while [ $cursor -ne 0 ]; do
if [ $cursor -eq -1 ]
then
cursor=0
fi
reply=`redis-cli -h "$host" -p "$port" -n "$database" SCAN $cursor MATCH $pattern COUNT $count`
cursor=`expr "$reply" : '\([0-9]*[0-9 ]\)'`
keys=${reply#[0-9]*[[:space:]]}
redis-cli -h "$host" -p "$port" -n "$database" DEL $keys
sleep $second
done