当前位置: 首页 > 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

相关文章:

redis内存分析

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

redis批量删除keys,用lua脚本。

文章目录 现象解决方法 现象 系统报错: misconf redis is configured to save ....后查看机器内存。 是内存满了,需要删除其中的key 解决方法 (1) 编写一个脚本,放在redis-cli.exe同一个目录 (2) 脚本内容如下: -- 使用Lua脚…...

Python-找客户软件

软件功能 请求代码: 填充表格: 可以search全国各个区县的所有企业信息,过滤手机号、查看是否续存/在业状态。方便找客户。 支持定-制-其他引-留-阮*件(XHSS,DYY,KS,Bi-li*Bi-li) V*…...

STM32 - PWR 笔记

PWR(Power Control)电源控制 PWR 负责管理 STM32 内部的电源供电部分,可以实现 可编程电压监测器 和 低功耗模式 的功能 可编程电压监测器(PVD)可以监控VDD电源电压,当VDD下降到PVD阀值以下或上升到PVD…...

标准盒模型和怪异盒子模型的区别

在 CSS 中,标准盒模型和怪异盒模型是两种不同的盒子模型计算方式,主要区别如下: 一、标准盒模型(content-box) 1. 定义与组成 - 标准盒模型是 CSS 中默认的盒模型。 - 它由内容区域(content)、…...

推荐算法——MRR

定义: MRR计算的是第一个正确答案的排名的倒数,并对所有查询取平均值。它衡量了模型在排序结果中快速找到正确答案的能力。 其中: Q 是查询的总数。ranki​ 是第 i 个查询中第一个正确答案的排名(位置)。如果第一个正…...

idea中打开静态网页端口是63342而不是8080

问题: 安装了tomcat 并且也配置了环境,但是在tomcat下运行,总是在63342下面显示。这也就意味着,并没有运行到tomcat环境下。 找了好几个教程(中间还去学习了maven,因为跟的教程里面,没有maven,但…...

Vue3框架搭建3:配置说明-prettier配置

1、配置说明: .prettierrc.json{"$schema": "https://json.schemastore.org/prettierrc","semi": false,"tabWidth": 2,"singleQuote": true,"printWidth": 100,"trailingComma": "no…...

SQL MySQL定时器/事件调度器(Event Scheduler)

事件调度器(Event Scheduler)在MySQL数据库系统中是一个强大的功能组件,它允许用户定义一系列称为“事件”的数据库对象,这些事件在指定的时间或时间间隔自动执行预定义的SQL语句或操作。事件调度器通过维护一个时间计划表来管理这…...

从0到1构建渠道运营体系:实战案例与策略指南

引言 在当今竞争激烈的市场环境中,有效的渠道运营是企业实现产品或服务快速触达目标用户、提升市场份额的关键。从零开始构建一个高效的渠道运营体系,不仅需要深思熟虑的策略规划,还需要灵活应变的实战操作。本文将结合实战案例,…...

Java版Flink使用指南——将消息写入到RabbitMQ的队列中

大纲 新建工程新增依赖 编码自动产生数据写入RabbitMQ 测试工程代码 在 《Java版Flink使用指南——从RabbitMQ中队列中接入消息流》一文中,我们介绍了如何使用Java在Flink中读取RabbitMQ中的数据,并将其写入日志中。本文将通过代码产生一些数据&#xf…...

python excel openpyxl

python excel LTS 在开始之前,确保已经安装了 Python 和所需的库。 主要使用以下库: openpyxl:用于读取和写入 Excel 文件。 pandas:用于数据处理和分析。 xlwings:用于将 Python 与 Excel 连接,实现双向…...

C++八股(一)

目录 一、new和malloc ⭐ 二、class和struct的区别 ⭐ 三、char和int之间的转换 四、什么是野指针和悬挂指针 ⭐ 五、NULL和nullptr区别⭐ 六、指针常量和常量指针有何区别⭐ 七、物理内存和虚拟内存的区别⭐ 八、重载、重写和隐藏的区别⭐ 九、简述面向对象(OOP)的…...

【Git的基本操作】版本回退 | 撤销修改的三种情况 | 删除文件

目录 5.版本回退 5.1选项hard&后悔药 5.2后悔药&commit id 5.3版本回退的原理 6.撤销修改 6.1情况一 6.2情况二 6.3情况三 ​7.删除文件 Git重要能力之一马,版本回退功能。Git是版本控制系统,能够管理文件历史版本。本篇以ReadMe文件为…...

STM32-I2C

本内容基于江协科技STM32视频学习之后整理而得。 文章目录 1. I2C通信1.1 I2C通信简介1.2 硬件电路1.3 I2C时序基本单元1.3.1 起始条件和终止条件1.3.2 发送一个字节1.3.3 接收一个字节1.3.4 发送应答和接收应答 1.4 I2C时序1.4.1 指定地址写1.4.2 当前地址读1.4.3 指定地址读…...

04.ffmpeg打印音视频媒体信息

目录 1、相关头文件 2、相关结构体 3、相关函数 4、函数详解 5、源码附上 1、相关头文件 #include <libavformat/avformat.h> 包含格式相关的函数和数据结构 #include <libavutil/avutil.h> 包含一些通用实用函数 2、相关结构体 AV…...

微信开发授权登录梳理总结

授权登录流程对比 微信公众号/网页 微信文档地址&#xff1a;https://developers.weixin.qq.com/doc/offiaccount/OA_Web_Apps/Wechat_webpage_authorization.html 流程图如下&#xff1a; 特殊说明&#xff1a; 步骤1拼接的微信地址是&#xff1a;https://open.weixin.qq…...

HTML5实现我的音乐网站源码

文章目录 作者&#xff1a;[xcLeigh](https://blog.csdn.net/weixin_43151418) 1.设计来源1.1 界面效果1.2 轮播图界面1.3 音乐播放界面1.4 视频播放界面 2.效果和源码2.1 动态效果2.2 源代码 源码下载万套模板&#xff0c;程序开发&#xff0c;在线开发&#xff0c;在线沟通 作…...

UNI_App平台调试指南 debug(十五)

App平台调试指南 debug 常规开发里,在 HBuilderX 的运行菜单里运行 App,手机端的错误或 console.log 日志信息会直接打印到控制台。 如果需要更多功能,比如审查元素、打断点 debug,则需要启动调试模式。自 HBuilderX 2.0.3+ 版本起开始支持 App 端的调试。 #打开调试窗口…...

LLM之RAG实战(四十一)| 使用LLamaIndex和Gemini构建高级搜索引擎

Retriever 是 RAG&#xff08;Retrieval Augmented Generation&#xff09;管道中最重要的部分。在本文中&#xff0c;我们将使用 LlamaIndex 实现一个结合关键字和向量搜索检索器的自定义检索器&#xff0c;并且使用 Gemini大模型来进行多个文档聊天。 通过本文&#xff0c;我…...

Go 网关模式:让业务逻辑和外部服务“保持距离“的艺术

&#x1f3ac; 场景小剧场 想象一下&#xff1a;你的电商系统要接支付功能。如果直接在 order 包里写 stripe.Charge()&#xff0c;明天老板说"换支付宝"&#xff0c;你就要满世界改代码 &#x1f62b; 网关模式就是给业务逻辑装个"万能插座"&#xff1a;不…...

2026年海南公司注册与合规服务行业评估报告

行业背景与评估维度2026年&#xff0c;随着海南自贸港全岛封关运作的正式实施&#xff0c;“零关税、低税率、简税制”的政策红利全面释放&#xff0c;海南已成为企业布局跨境业务与享受税收优惠的战略高地。然而&#xff0c;政策环境的快速迭代也带来了显著的痛点&#xff1a;…...

SEO 优化与网站分析有什么关系

SEO优化与网站分析&#xff1a;不可分割的伙伴 在当今数字化时代&#xff0c;拥有一个成功的网站不仅仅是一个企业的门面&#xff0c;更是其吸引客户和拓展市场的重要途径。无论你是初创企业还是成熟的行业巨头&#xff0c;网站的流量和用户体验直接影响着你的商业成功。而在这…...

别再让LDO过热罢工了!手把手教你用串联电阻给TPS732这类芯片‘减负’

巧用串联电阻为LDO芯片降温的工程实践 最近在调试一块嵌入式板卡时&#xff0c;发现采用SOT-23封装的TPS732频繁触发热保护&#xff0c;导致系统间歇性重启。这种看似简单的电源问题&#xff0c;往往会让工程师在深夜的实验室里抓狂。传统解决方案如增大铺铜面积或更换封装&…...

3步掌握猫抓扩展:网页资源嗅探工具全面使用指南

3步掌握猫抓扩展&#xff1a;网页资源嗅探工具全面使用指南 【免费下载链接】cat-catch 猫抓 浏览器资源嗅探扩展 / cat-catch Browser Resource Sniffing Extension 项目地址: https://gitcode.com/GitHub_Trending/ca/cat-catch 还在为在线视频无法保存而困扰吗&#…...

如何在VSCode安装stm32的开发环境

第一步先安装VSCode和STM32CubeMX;第二步在Vscode中安装插件1&#xff1a;chinese2&#xff1a;STM32Cube for Visual Studio Code第三步在STM32CubeMX生成代码&#xff0c;先进行调试接口配置&#xff0c;Serial Wire是stlink调试&#xff1b;再生成代码界面选择cmake和GCC&am…...

用PyQt5打造GUI应用:PyCharm中QtDesigner和PyUic的高效工作流配置

PyCharm专业版中PyQt5高效开发&#xff1a;QtDesigner与PyUic深度整合指南 在Python GUI开发领域&#xff0c;PyQt5凭借其强大的功能和跨平台特性&#xff0c;已成为众多开发者的首选工具。然而&#xff0c;许多中级开发者在实际项目中常遇到工作流断裂的问题——设计界面与代码…...

如何用Hearthstone-Script解放炉石传说玩家双手?开源自动化工具全解析

如何用Hearthstone-Script解放炉石传说玩家双手&#xff1f;开源自动化工具全解析 【免费下载链接】Hearthstone-Script Hearthstone script&#xff08;炉石传说脚本&#xff09; 项目地址: https://gitcode.com/gh_mirrors/he/Hearthstone-Script 你是否也曾为炉石传说…...

让旧款Mac重获新生:OpenCore Legacy Patcher完整指南

让旧款Mac重获新生&#xff1a;OpenCore Legacy Patcher完整指南 【免费下载链接】OpenCore-Legacy-Patcher Experience macOS just like before 项目地址: https://gitcode.com/GitHub_Trending/op/OpenCore-Legacy-Patcher 你是否有一台被苹果官方抛弃的旧款Mac&#…...

PyTorch 2.9镜像使用指南:Jupyter与SSH两种方式详细解析

PyTorch 2.9镜像使用指南&#xff1a;Jupyter与SSH两种方式详细解析 1. 镜像概述 PyTorch 2.9镜像是一个开箱即用的深度学习开发环境&#xff0c;预装了PyTorch 2.9框架和CUDA工具包。这个镜像特别适合需要快速搭建GPU加速开发环境的用户&#xff0c;无论是进行模型训练、推理…...