删除redis集群上的key的shell脚本

时间:2021-08-22 15:31:25

此脚本有几个前提

1.我的redis集群是在同一台服务器

2.我的端口是连续的

3.如果redis集群在不同的服务器上可以修改这两行代码

re=$(redis-cli -p $port keys $x) 改为:re=$(redis-cli -h 主机地址 -p $port keys $x)
result=$(redis-cli -p $port del $x)改为: result=$(redis-cli -h 主机地址 -p $port del $x)

4.此脚本的缺点是删除对应的key后未通知其他节点此节点已经被删除了,研究研究再加上吧

5.delkey.txt 中为redis中存储的key,每个key换行

delkey.txt

a
b
c

delkey.sh

#! /bin/sh
echo "delete redis keys begin"
#循环delkey.txt文件读取需要删除的key
declare port=6379
declare endport=6379
while ((port<=endport))
do
echo "port:"$port
for x in $(cat delkey.txt)
do
re=$(redis-cli -p $port keys $x)
#如果key存在则删除
if [ "$re"x = "$x"x ]
then
result=$(redis-cli -p $port del $x)
echo "$x"
fi
done
let ++port
done
echo "delete redis keys end"