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

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

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

背景

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

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

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

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

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

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

RDB 说明

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

rdb-cli 分析

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

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

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

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

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

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

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

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

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

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

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

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

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

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

小结

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

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

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

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

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

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

标签:
  • 热门焦点
  • 小米降噪蓝牙耳机Necklace分享:听一首歌 读懂一个故事

    在今天下午的小米Civi 2新品发布会上,小米还带来了一款新的降噪蓝牙耳机Necklace,我们也在发布结束的第一时间给大家带来这款耳机的简单分享。现在大家能见到最多的蓝牙耳机
  • JavaScript 混淆及反混淆代码工具

    介绍在我们开始学习反混淆之前,我们首先要了解一下代码混淆。如果不了解代码是如何混淆的,我们可能无法成功对代码进行反混淆,尤其是使用自定义混淆器对其进行混淆时。什么是混
  • K6:面向开发人员的现代负载测试工具

    K6 是一个开源负载测试工具,可以轻松编写、运行和分析性能测试。它建立在 Go 和 JavaScript 之上,它被设计为功能强大、可扩展且易于使用。k6 可用于测试各种应用程序,包括 Web
  • Golang 中的 io 包详解:组合接口

    io.ReadWriter// ReadWriter is the interface that groups the basic Read and Write methods.type ReadWriter interface { Reader Writer}是对Reader和Writer接口的组合,
  • 企业采用CRM系统的11个好处

    客户关系管理(CRM)软件可以为企业提供很多的好处,从客户保留到提高生产力。  CRM软件用于企业收集客户互动,以改善客户体验和满意度。  CRM软件市场规模如今超过580
  • 零售大模型“干中学”,攀爬数字化珠峰

    文/侯煜编辑/cc来源/华尔街科技眼对于绝大多数登山爱好者而言,攀爬珠穆朗玛峰可谓终极目标。攀登珠峰的商业路线有两条,一是尼泊尔境内的南坡路线,一是中国境内的北坡路线。相
  • 小米公益基金会捐赠2500万元驰援北京、河北暴雨救灾

    8月2日消息,今日小米科技创始人雷军在其微博上发布消息称,小米公益基金会宣布捐赠2500万元驰援北京、河北暴雨救灾。携手抗灾,京冀安康!以下为公告原文
  • 华为开发者大会2023日程公开:开设鸿蒙HarmonyOS 4体验区

    IT之家 7 月 31 日消息,华为今日公布了 HDC.Together 开发者大会 2023 的详细日程。整场大会将于 8 月 4 日-6 日之间举行,届时将发布最新一代鸿蒙 H
  • 英特尔Xe HPG游戏显卡:拥有512EU,单风扇版本

    据10 月 30 日外媒 TheVerge 消息报道,英特尔 Xe HPG Arc Alchemist 的正面实被曝光,不仅拥有 512 EU 版显卡,还拥有 128EU 的单风扇版本。另外,这款显卡 PCB
Top