原文:https://www.yuque.com/wei01/qvvnat/op4906
# 批量删除普通key(需要在每个节点执行)(O(n)操作)
redis-cli -p 7440 -a xxx keys "key前缀*">s.txt
# 批量扫描key(O(1)操作)
# 轮询查看统计key的数量
# 使用办法: sh scan.sh key前缀
#(每次扫10000个,扫10次,最多扫100000个,如果扫不到,就会提前结束,如果很多,建议扫描次数增加)
scan.sh
#!/bin/bash
begin=0
a=`redis-cli -h 127.0.0.1 -p 6379 -a xxxx scan $begin match $1* count 10000|head -n 1`
for i in `seq 1 10`
do
a=`redis-cli -h 127.0.0.1 -p 6379 -a xxxx scan $a match $1* count 10000|head -n 1`
b=`redis-cli -h 127.0.0.1 -p 6379 -a xxxx scan $a match $1* count 10000|awk 'NR>1'`
echo $b>>/tmp/$1.txt
if [ $a -eq 0 ]
then
c=`grep -o $1 /tmp/$1.txt|wc -l`
echo $c
sed -i 's/ /\n/g' /tmp$1.txt
break
fi
done
# 文件名替换成实际文件名
cat s.txt | while read line
do
redis-cli -p 7440 -a xxxx -c del $line
done
# 删除一个 key (不能用于大key) (避免O(n)操作,尽量做O(1)操作,否则会阻塞其他后续线程)
redis-cli -p 7440 -a xxxx del xxxx:xxxx:xxx:xxx
# 清除hash key O(n)操作,请使用hscan
redis-cli -p 7440 -a xxx hkeys "hashkey">s.txt
cat s.txt | while read line
do
redis-cli -p 7440 -a xxxx hdel hashkey $line
done
# flushdb 清理 当前db 默认db 0,默认一个16个
# flushall 清理当前实例的所有数据库key
redis清理key
最新推荐文章于 2024-04-29 10:22:44 发布