当前位置: 首页 > news >正文

redis内存分析

阿里云redis集群对key进行hash后保存在对应的后端节点,使每个节点的key数量大致相同,但是如果存在大key,就会导致单个节点内存用满,可以使用redis-rdb-toolsrdr来对内存进行分析。

redis-rdb-tools

redis-rdb-tools通过对dump.rdb文件进行分析后生成报告,通过报告进行内存分析。

redis-rdb-tools是一个python解析rdb文件的工具,有以下三个 功能。

  • 生成内存快照
  • 转储成json格式
  • 使用标准的diff工具比较两个dump文件

安装

安装方式推荐使用pip进行安装

# python-lzf是可选的,但强烈建议加快解析速度。
pip install rdbtools python-lzf

创建备份

使用bgsave生成rdb文件,然后使用redis-rdb-tools对文件进行分析。

生成内存快照

生成内存快照的命令为:

rdb -c memory dump.rdb > memory.csv

生成 CSV 格式的内存报告。包含的列有:数据库 ID,数据类型,key,内存使用量(byte),编码。内存使用量包含 key、value 和其他值。

注意:内存使用量是理论上的近似值,在一般情况下,略低于实际值。memory.csv 例子:

bogon:helei helei$ head memory.csv
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element,expiry
0,set,b_13540658,444,hashtable,5,10,
0,set,b_27776658,276,hashtable,2,10,

分析内存快照

SQLite 是一款轻型的数据库。我们可以将前面生成的 csv 导入到数据库中之后,就可以利用 sql 语句很方便的对 Redis 的内存数据进行各种分析了。

sqlite3 memory.db
sqlite> create table memory(database int,type varchar(128),key varchar(128),size_in_bytes int,encoding varchar(128),num_elements int,len_largest_element varchar(128),export varchar(128));
sqlite>.mode csv memory
sqlite>.import memory.csv memory

数据导入以后,接下来想怎么分析就怎么分析了,举几个简单的例子:

# 查询key个数
sqlite> select count(*) from memory;
# 查询总的内存占用
sqlite> select sum(size_in_bytes) from memory;
#查询内存占用最高的10个 key
sqlite> select * from memory order by size_in_bytes desc limit 10;
#查询成员个数1000个以上的 list
sqlite> select * from memory where type='list' and num_elements > 1000 ;
rdr

参数文档:https://github.com/xueqiu/rdr

参考文档:https://github.com/sripathikrishnan/redis-rdb-tools

http://www.lryc.cn/news/397554.html

相关文章:

  • redis批量删除keys,用lua脚本。
  • Python-找客户软件
  • STM32 - PWR 笔记
  • 标准盒模型和怪异盒子模型的区别
  • 推荐算法——MRR
  • idea中打开静态网页端口是63342而不是8080
  • Vue3框架搭建3:配置说明-prettier配置
  • SQL MySQL定时器/事件调度器(Event Scheduler)
  • 从0到1构建渠道运营体系:实战案例与策略指南
  • Java版Flink使用指南——将消息写入到RabbitMQ的队列中
  • python excel openpyxl
  • C++八股(一)
  • 【Git的基本操作】版本回退 | 撤销修改的三种情况 | 删除文件
  • STM32-I2C
  • 04.ffmpeg打印音视频媒体信息
  • 微信开发授权登录梳理总结
  • HTML5实现我的音乐网站源码
  • UNI_App平台调试指南 debug(十五)
  • LLM之RAG实战(四十一)| 使用LLamaIndex和Gemini构建高级搜索引擎
  • 【错题集-编程题】AOE还是单体?(贪心)
  • 怎么办?我的C盘又爆红了!别慌!博主手把手带你管理你的C盘空间~
  • react启用mobx @decorators装饰器语法
  • 计算机如何学习
  • 【Python 基础】函数 - 1
  • 从0到1开发一个Vue3的新手引导组件(附带遇到的问题以及解决方式)
  • 概率统计(二)
  • 文件类:如何将excel文件转为csv文件(且保留时间格式)?
  • FiddlerScript Rules修改-更改发包中的cookie
  • 直升机停机坪的H代表什么
  • hyperworks软件许可优化解决方案