redis的bigkey浅显分析

如何分析redis的bigkey?
现在互联网通用的缓存组件,基本上都依赖于redis,在使用redis的时候,运维团队往往会碰到一些因为bigkey导致的慢查和业务响应缓慢的问题,针对redis的bigkey如何去分析?
PS.大于10K的就被定义为大key
第一种方案:
1.通过shell脚本调用–bigkeys把实例的bigkeys分析出来
2.通过shell脚本调用–scan把实例的key通过scan拿出来在进行ttl key,确认是否设置ttl
3.最终将输出的结果放到日志文件中
4.通过filebeat-logstash-es-kibana进行展示
5.通过elastalert可针对keyvalue进行匹配告警
缺点:每次执行脚本,遇到key很多的实例,执行时间会很久
在这里插入图片描述
最终效果
在这里插入图片描述
第二种方案
1.通过aws后台将实例的备机导出rdb文件落盘到10.161.40.92上
2.通过go分析rdb文件,github项目路径:https://github.com/weiyanwei412/rdb_bigkeys/
3.执行命令 ./rdb_bigkeys --bytes 1024 --file bigkeys_test.csv --sep 0 --sorted --threads 4 /tmp/aa.rdb 将文件落盘到CSV并进行排序
4.将改CSV文件传输到ELK中展示
缺点:同上导出RDB文件比较慢,相比脚本要快点,可同步导出多个实例的rdb文件,该方法不支持5.0版本的rdb,支持老版本,目前测试成功版本是3.2.11
效果:
在这里插入图片描述

FAQ:考虑到rdb_bigkeys每次在分析rdb文件的时候,不能往一个文件输入(每次都是清空),改了代码,将内容追加输入,这样多个rdb会往一个文件输入,修改代码如下:
在这里插入图片描述
在这里插入图片描述
第三种方案:
1.通过rdb工具将实例的备机导出rdb文件落盘到机器上
2.通过redis-rdb-tools分析rdb文件,并将结果输入到csv中
3.执行命令rdb -c memory /tmp/aa.rdb --bytes 1024 -f memory.csv将结果落盘到文件
4.通过filebeat-logstash-es-kibana进行展示
缺点:很慢,没有go快
优点:支持各版本rdb
效果:
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值