此脚本有几个前提
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"