#!/usr/bin/env bash
#定义redis 集群数组
cluster=("master" "node1" "node2")
#定义redis集群实例开放端口
port=(7000 7001 7002)
#获取指定类型键值的数据
function count(){
count=0
while read LINE
do
((count=count+1))
done < PVKEYS.txt
echo "pvid 的数量为: $count"
}
#调用redis删除命令删除redis多余键值的数据
function del(){
while read LINE
do
var=`echo $LINE | awk -F ' ' '{print $2}'`
redis-cli -h master -p 7000 -c del $var
done < PVKEYS.txt
}
#删除出正确的pvid数据
function selector(){
while read LINE
do
#echo $LINE
var=`echo $LINE | awk -F ' ' '{print $1}'`
#echo ${#var}
if [ ${#var} -eq 15 ];then
echo $var >> PVKEYS.txt
else
echo $var
fi
done < keys.txt
}
#获取redis中所有的key值
function getKeys(){
for j in ${port[@]}
do
for k in ${cluster[@]}
do
echo "keys *" | redis-cli -h ${k} -p ${j} -c >>keys.txt
done
done
}
#生成批处理命令
function command(){
while read LINE
do
echo "del $LINE" >>command.txt
done < PVKEYS.txt
}
#利用redis pipeline删除数据
function commandDel(){
cat command.txt | redis-cli -h master -p 7000 -c
}
function delTxt(){
rm -rf keys.txt
rm -rf PVKEYS.txt
rm -rf command.txt
}
#根据前缀删除
function delByPrefix(){
cat "redis-cli -h master -p 7000 -c -n 0 keys * | xargs redis-cli -h master -p 7000 -c -n 1 del "
}
#删除生成的中间文件
delTxt
#第一步,首先获取所有的redis键值
getKeys
#第二部,对keys值进行筛选
selector
#第三部 调用函数删除redis中的数据
# del
#生成批命令语句
command
#调用批处理命令删除
commandDel
#调用脚本获取pvid键值的数量
#count
批量删除redis特殊键值
最新推荐文章于 2022-10-25 11:10:13 发布