redis 用scan扫描所有key的脚本
2021/10/29 19:12:28
本文主要是介绍redis 用scan扫描所有key的脚本,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
需求:分析redis剩下都有哪些类型的key
如果我们redis有上亿的key留存,占用很大内存,那么我们不能直接使用key * 这种形式去查看。这样在生产上面直接会把redis搞垮掉。
所以需要用到scan工具分段去扫出所有的key,然后根据key的前缀分析都是一些什么key占用的。
脚本如下:
#/bin/bash ftmp="tmp_key.txt" rediskeys="allkeysrediskeys.txt" # 指定扫描的范围,下面是每次扫描10000条数据,如果你redis机器性能好的话,可以调成10w #redis-cli -h 192.168.2.222 -a '123456' scan 0 match "*" count 10000 |awk '{print $1}' >${ftmp} redis-cli -h 192.168.2.222 -a '123456' -n 1 scan 0 match "*" count 1000 |awk '{print $1}' >${ftmp} #for i in {1..10000} for i in {1..10} do echo "第 $i 次循环:" # 获取point点 point=`sed -n 1p ${ftmp}` echo "$point" sed -i '1d' ${ftmp} cat ${ftmp} >> ${rediskeys} if [ ${point} -eq 0 ];then echo "point=0 end scripts!" exit 1 fi # -n 指定库名 redis-cli -h 192.168.2.222 -a '123456' -n 1 scan ${point} match "*" count 100000 |awk '{print $1}' > ${ftmp} echo "redis-cli -h 192.168.2.222 -a 123456 scan ${point} match \"*\" count 1000000 |awk '{print $1}' > ${ftmp}" sleep 1 done
通过上面脚本,我们得出redis所有的key写入文件:allkeysrediskeys.txt
配合awk 或者其他命令工具进行分析。比如我定义的key 格式是:业务名称:电话号码或者其他的
这样我可以通过下面命令分析:
awk -F':' '{print $1}' allkeysrediskeys.txt | sort -n | uniq -c | sort -n
通过输出可以看到主要是哪些业务的key比较多。
这篇关于redis 用scan扫描所有key的脚本的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-08阿里云Redis项目实战入门教程
- 2024-11-08阿里云Redis资料:新手入门与初级使用指南
- 2024-11-08阿里云Redis教程:新手入门及实用指南
- 2024-11-07阿里云Redis学习入门:新手必读指南
- 2024-11-07阿里云Redis学习入门:从零开始的操作指南
- 2024-11-07阿里云Redis学习:初学者指南
- 2024-11-06阿里云Redis入门教程:轻松搭建与使用指南
- 2024-11-02Redis项目实战:新手入门教程
- 2024-10-22Redis入门教程:轻松掌握数据存储与操作
- 2024-10-22Redis缓存入门教程:快速掌握Redis缓存基础知识