当前位置:首页 > 科技  > 软件

聊一聊如何离线分析Redis缓存的空闲分布

来源: 责编: 时间:2024-04-08 17:17:53 280观看
导读背景我们在使用 Redis 的过程中,有时候会想要知道某些 key 是否长时间没有被访问,如果这些 key 长时间没有人访问,并且还占用了比较大的内存空间时,我们就会想及时的清理掉这些 key。Redis 本身提供了一个 OBJECT IDLETIM

背景

我们在使用 Redis 的过程中,有时候会想要知道某些 key 是否长时间没有被访问,如果这些 key 长时间没有人访问,并且还占用了比较大的内存空间时,我们就会想及时的清理掉这些 key。3O828资讯网——每日最新资讯28at.com

Redis 本身提供了一个 OBJECT IDLETIME 的命令可以让我们来查询某个 key 最后一次被访问后的秒数。3O828资讯网——每日最新资讯28at.com

https://redis.io/commands/object-idletime/3O828资讯网——每日最新资讯28at.com

但是这个命令对于分析整个 Redis 实例时会显得十分吃力,免不了 scan + object idletime 的组合。3O828资讯网——每日最新资讯28at.com

如果能把这个时间从 rdb 文件读出来再进行分析,可以有效减少对线上实例的影响,同时效率也会高不少。3O828资讯网——每日最新资讯28at.com

下面来看看如何做到的。3O828资讯网——每日最新资讯28at.com

RDB 说明

关键操作符3O828资讯网——每日最新资讯28at.com

16进制
3O828资讯网——每日最新资讯28at.com

10进制
3O828资讯网——每日最新资讯28at.com

简称
3O828资讯网——每日最新资讯28at.com

说明
3O828资讯网——每日最新资讯28at.com

0xF8
3O828资讯网——每日最新资讯28at.com

248
3O828资讯网——每日最新资讯28at.com

IDLE
3O828资讯网——每日最新资讯28at.com

标识LRU的空闲时间
3O828资讯网——每日最新资讯28at.com

0xF9
3O828资讯网——每日最新资讯28at.com

249
3O828资讯网——每日最新资讯28at.com

FREQ
3O828资讯网——每日最新资讯28at.com

标识LFU的访问频率
3O828资讯网——每日最新资讯28at.com

其中 248 和 249 两个是只会存在一个,但是它们又用的同一个数据结构,所以要把它们放在一起来说明。3O828资讯网——每日最新资讯28at.com

下面再看看一个 key value 完整的“数据结构”3O828资讯网——每日最新资讯28at.com

252 EXPIRE_TIME_MS|253 EXPIRE_TIME|249 LFU 或 248 LRU|xxx VALUE_TYPE|xxx KEY|xxx VALUE|

可以看到第三部分就是我们所需要的。3O828资讯网——每日最新资讯28at.com

rdb-cli 分析

rdb-cli 是老黄写的一个开源 rdb 文件分析器,源码地址:https://github.com/catcherwong/rdb-tools,感兴趣的可以关注一下。3O828资讯网——每日最新资讯28at.com

rdb-cli 里面有两个命令用于做这一块的分析。3O828资讯网——每日最新资讯28at.com

首先是3O828资讯网——每日最新资讯28at.com

rdb-cli memory /    -ot html /    --sep-count 3 /    /tmp/biz_a_20240301.rdb

执行这个之后,会生成一个 res.html 文件,打开这个文件会看到下面两个图:3O828资讯网——每日最新资讯28at.com

图片图片3O828资讯网——每日最新资讯28at.com

这两个图就是所有 key 的空闲分布,可以看到,就数量而言,这个 redis 实例,有超过 100w 的 key 是在 7天内没有过访问的!!3O828资讯网——每日最新资讯28at.com

有这个大致分布,但是还看不到具体的细节,所以我们要用另外一个命令来看具体是那些 key 这么离谱。3O828资讯网——每日最新资讯28at.com

rdb-cli csv /    --min-idle 604800 /    /tmp/biz_a_20240301.rdb

执行这个之后,会生成一个 dump.csv 文件,打开这个文件可以看到下面的内容:3O828资讯网——每日最新资讯28at.com

图片图片3O828资讯网——每日最新资讯28at.com

着重看 idle 这一列,单位是秒。3O828资讯网——每日最新资讯28at.com

可以看到超过 7天 没访问的,最长的有 16693102 秒,换算成天,是 193 天,接近 200 天。这种数据就不应该存在 redis 里面!3O828资讯网——每日最新资讯28at.com

两个命令,用起来还算是比较方便的,也比较快得到结果,当然上述两个命令还有其他的过滤条件可以结合使用,用 -h 即可查看。3O828资讯网——每日最新资讯28at.com

小结

对于设置了 LRU 相关策略的 Redis 实例才可以用这个方法去分析空闲分布,如果是 LFU 相关策略的,则无法看到空闲分布!!3O828资讯网——每日最新资讯28at.com

原因的话,object idletime 已经告诉我们了。3O828资讯网——每日最新资讯28at.com

本文链接:http://www.28at.com/showinfo-26-82031-0.html聊一聊如何离线分析Redis缓存的空闲分布

声明:本网页内容旨在传播知识,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。邮件:2376512515@qq.com

上一篇: 探索C++类中static关键字的妙用

下一篇: 深入掌握Rust测试:从基础用例到控制测试执行的完全指南

标签:
  • 热门焦点
  • Find N3入网:最高支持16+1TB

    OPPO将于近期登场的Find N3折叠屏目前已经正式入网,型号为PHN110。本次Find N3在外观方面相比前两代有很大的变化,不再是小号的横向折叠屏,而是跟别的厂商一样采用了较为常见的
  • 对标苹果的灵动岛 华为带来实况窗功能

    继苹果的灵动岛之后,华为也在今天正式推出了“实况窗”功能。据今天鸿蒙OS 4.0的现场演示显示,华为的实况窗可以更高效的展现出实时通知,比如锁屏上就能看到外卖、打车、银行
  • Raft算法:保障分布式系统共识的稳健之道

    1. 什么是Raft算法?Raft 是英文”Reliable、Replicated、Redundant、And Fault-Tolerant”(“可靠、可复制、可冗余、可容错”)的首字母缩写。Raft算法是一种用于在分布式系统
  • Python异步IO编程的进程/线程通信实现

    这篇文章再讲3种方式,同时讲4中进程间通信的方式一、 Python 中线程间通信的实现方式共享变量共享变量是多个线程可以共同访问的变量。在Python中,可以使用threading模块中的L
  • 共享单车的故事讲到哪了?

    来源丨海克财经与共享充电宝相差不多,共享单车已很久没有被国内热点新闻关照到了。除了一再涨价和用户直呼用不起了。近日多家媒体再发报道称,成都、天津、郑州等地多个共享单
  • 冯提莫签约抖音公会 前“斗鱼一姐”消失在直播间

    来源:直播观察提起“冯提莫”这个名字,很多网友或许听过,但应该不记得她是哪位主播了。其实,作为曾经的“斗鱼一姐”,冯提莫在游戏直播的年代影响力不输于现
  • Android 14发布:首批适配机型公布

    5月11日消息,谷歌在今天凌晨举行了I/O大会,本次发布会谷歌带来了自家的AI语言模型PaLM 2、谷歌Pixel Fold折叠屏、谷歌Pixel 7a手机,同时发布了Androi
  • OPPO K11搭载高性能石墨散热系统:旗舰同款 性能凉爽释放

    日前OPPO官方宣布,将于7月25日14:30举办新品发布会,届时全新的OPPO K11将正式与大家见面,将主打旗舰影像,和同档位竞品相比,其最大的卖点就是将配备索尼
  • 联想小新Pad Pro 12.6将要推出,搭载高通骁龙 870 处理器

    联想小新Pad Pro 12.6将于秋季新品会上推出,官方按照惯例直接在发布会前给出了机型的所有参数。联想小新 Pad Pro 12.6 将搭载高通骁龙 870 处理器,重量为 5
Top