Redis内存分析方法
文章系转载,方便整理和归纳,源文地址 https://developer.aliyun.com/article/62899
简介: 线上经常遇到用户想知道自己Redis实例内存使用情况,质疑内存占用量太高。为了不影响线上实例的使用,我们一般会采用bgsave生成dump.rdb文件,再结合redis-rdb-tools和sqlite来进行静态分析。
背景
线上经常遇到用户想知道自己Redis实例中数据的内存分布情况。
为了不影响线上实例的使用,我们一般会采用bgsave生成dump.rdb文件,再结合redis-rdb-tools和sqlite来进行静态分析。
创建备份
自建Redis可在客户端执行bgsave生成rdb文件。
阿里云数据库Redis版可以在控制台上可以进行数据备份和下载的操作,下载后的数据为rdb格式文件。
步骤详见下图:
生成内存快照
redis-rdb-tools是一个python的解析rdb文件工具, 主要有一下三个功能:
- 生成内存快照
- 转储成json格式
- 使用标准的diff工具比较两个dump文件
在分析内存的使后,我们主要用到它的生成内存快照功能。
redis-rdb-tools安装
redis-rdb-tools有两种安装方式,任选其一即可。
使用PYPI安装
pip install rdbtools
从源码安装
git clone https://github.com/sripathikrishnan/redis-rdb-tools
cd redis-rdb-tools
sudo python setup.py install
使用redis-rdb-tools生成内存快照
生成内存快照的命令为:
rdb -c memory dump.rdb > memory.csv
生成CSV格式的内存报告。包含的列有:数据库ID,数据类型,key,内存使用量(byte),编码。内存使用量包含key、value和其他值。
注意:内存使用量是理论上的近似值,在一般情况下,略低于实际值。
memory.csv例子:
$head memory.csv
database,type,key,size_in_bytes,encoding,num_elements,len_largest_element
0,string,"orderAt:377671748",96,string,8,8
0,string,"orderAt:413052773",96,string,8,8
0,sortedset,"Artical:Comments:7386",81740,skiplist,479,41
0,sortedset,"pay:id:18029",2443,ziplist,84,16
0,string,"orderAt:452389458",96,string,8,8
分析内存快照
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));
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 ;
总结
通过使用redis-rdb-tools + sqlite的方式,可以方便的对redis实例的内存情况进行静态的分析。整个过程也比较简单,获取到rdb之后
rdb -c memory dump.rdb > memory.csv;
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));
sqlite>.mode csv memory
sqlite>.import memory.csv memory
即可
实际使用中,发现过一个List积攒了10多G的内容,也发现过43M以上的string类型的value, 往往不仅能解答用户的疑惑,而且能够帮助用户排除业务中潜在的风险点,找到业务性能瓶颈。
总的来说,整个分析的过程简单而实用,是每一个Redis的用户都非常值得掌握的一个方法。
Redis内存分析方法相关推荐
- 内存分析_Redis内存爆炸增长?你需要知道这一套Redis内存分析方法
Redis Redis介绍 NoSQL Redis是当前比较热门的NOSQL数据库之一,和Memcache一样,数据都是缓存在计算机内存中.完全开源免费,遵守BSD协议,是一个高性能的key-valu ...
- golang 编写的在线redis 内存分析工具 rma4go
redis 内存分析工具 rma4go redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个redis的 ...
- redis 内存分析工具 `rma4go`
redis 内存分析工具 rma4go redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个redis的 ...
- 一个golang编写的redis内存分析工具rma4go
redis 内存分析工具 rma4go 简介 redis是一个很有名的内存型数据库,这里不做详细介绍.而rma4go (redis memory analyzer for golang) 是一个red ...
- redis 内存分析工具 RMA 使用
RMA 介绍 RMA 是一个控制台工具,用于实时扫描 Redis 密钥空间并按密钥模式聚合内存使用情况统计信息.您可以使用此工具而无需在生产服务器上进行维护.您可以按所有或选定的 Redis 类型进行 ...
- redis内存分析工具rdbtools
当Redis的内存已经快满的时候,我们能做什么呢? 最直接的方法就是分析一下Redis内存的构成,看是哪些键比较大,或者比较多,然后考虑一下对应的功能能不能优化,例如减少超时时间,例如不必要的数据不用 ...
- Redis 内存分析神器
RDR 简介 RDR 是解析 redis rdbfile 工具.与redis-rdb-tools相比,RDR 是由golang 实现的,速度更快(5GB rdbfile 在我的PC上大约需要2分钟). ...
- Redis内存分析工具
2019独角兽企业重金招聘Python工程师标准>>> RdbTools是一个由于分析Redis dump.rdb文件的工具,有以下功能: 生成所有数据库和key的内存分析报告 把d ...
- Redis内存分析工具之redis-rdb-tools的安装与使用
操作系统:Centos7 1.redis-rdb-tools工具是用python语言编写的,所以首先需要安装python: 安装: (1)安装libffi-devel: yum -y insta ...
- 20201129_091.实例方法_内存分析方法调用过程_dir()_isinstance
实例方法 实例方法是从属于实例对象的方法.实例方法的定义格式如下: def 方法名(self [, 形参列表]):函数体 方法的调用格式如下: 对象.方法名([实参列表]) ps:老师说实例方法本质上 ...
最新文章
- delphi 中怎么知道某一个月有多少天
- SAP and ABAP Memory总结
- oracle之基本的过滤和排序数据
- cad在线转低版本_【设计专业干货】史上最齐全的CAD大全
- 康熙通宝铜钱值多少钱?
- 华农2012年java答案_2012年计算机二级Java应用章节练习题及答案
- radius服务器连接无线网络,验证RADIUS服务器连接用测验AAA RADIUS命令
- 正负数据如何归一化_数据归一化方法大全
- linux中 qt安装教程视频,Linux 下QT安装教程
- poi导出excel报错Failed to read zip entry source
- 人工智能统计大数据带动数据时代
- 阴阳师服务器维护内容,阴阳师8月1日维护内容介绍_友人帐弈鬼切内容介绍_3DM手游...
- SQLServer笔试题
- 盛迈坤电商:拼多多推广数据多久会显示
- 兆骑科创创客大赛,招商引资,招才引智,招企引税
- Excel VBA 打开百度网页输入关键字并搜索
- android studio manifest merger failed,Android Studio报错Manifest merger failed with multiple errors...
- 解决屏蔽流氓蜘蛛抓取,如MJ12bot 、DotBot 、BLEXBot 、PetalBot 、DataForSeoBot
- 关于音乐制作的一些网站
- API登录接口文档事例