使用rdbtools分析redis内存使用
介绍
阿里云redis内存使用持续飙升,需要分析下内存使用情况,有发现redis-rdb-tools,支持对rdb文件分析,主要功能有:
- Generate a Memory Report of your data across all databases and keys
- Convert dump files to JSON
- Compare two dump files using standard diff tools
实现
安装
[root@xxx redis]# pip install rdbtools python-lzf
[root@xxx redis]# git clone https://github.com/sripathikrishnan/redis-rdb-tools
[root@xxx redis]# cd redis-rdb-tools
[root@xxx redis]# python setup.py install
参数说明
[root@xxx redis]# rdb --help
Usage: rdb [options] /path/to/dump.rdbExample : rdb --command json -k "user.*" /var/redis/6379/dump.rdbOptions:-h, --help show this help message and exit-c FILE, --command=FILECommand to execute. Valid commands are json, diff,justkeys, justkeyvals, memory and protocol-f FILE, --file=FILE Output file-n DBS, --db=DBS Database Number. Multiple databases can be provided.If not specified, all databases will be included.-k KEYS, --key=KEYS Keys to export. This can be a regular expression-o NOT_KEYS, --not-key=NOT_KEYSKeys Not to export. This can be a regular expression-t TYPES, --type=TYPESData types to include. Possible values are string,hash, set, sortedset, list. Multiple typees can beprovided. If not specified, alldata types will be returned-b BYTES, --bytes=BYTESLimit memory output to keys greater to or equal tothis value (in bytes)-l LARGEST, --largest=LARGESTLimit memory output to only the top N keys (by size)-e ESCAPE, --escape=ESCAPEEscape strings to encoding: raw (default), print,utf8, or base64.
生成csv报告
生成报表字段有database(key在redis的db)、type(key类型)、key(key值)、size_in_bytes(key的内存大小)、encoding(value的存储编码形式)、num_elements(key中的value的个数)、len_largest_element(key中的value的长度),可以创建个表的导入到关系型库用SQL语句分析。
[root@xxx redis]# rdb -c memory hins3537653_data_20180427002229.rdb > memory.csv
mysql> CREATE TABLE `redis_memory` (-> id int NOT NULL PRIMARY KEY,-> `database` int(128) DEFAULT NULL comment 'key在redis的db',-> `type` varchar(128) DEFAULT NULL comment 'key类型',-> `key` varchar(128) UNIQUE KEY comment 'key值',-> `size_in_bytes` bigint(20) DEFAULT NULL comment 'key的内存大小',-> `encoding` varchar(128) DEFAULT NULL comment 'value的存储编码形式',-> `num_elements` bigint(20) DEFAULT NULL comment 'key中的value的个数',-> `len_largest_element` varchar(128) DEFAULT NULL comment 'key中的value的长度'-> );
解析指定key
[root@xxx redis]# rdb --command justkeyvals --key "02796f8159cabac4*" /mnt/redis/hins3537653_data_20180427002229.rdb
解析特定字符打头指定类型的key
[root@xxx redis]# rdb -c json --db 0 --type string --key "02796f8159cabac4*" /mnt/redis/hins3537653_data_20180427002229.rdb
根据使用内存大小排序
-n是按照数字大小排序,-r是以相反顺序,-k是指定需要爱排序的栏位,-t指定栏位分隔符为冒号
[root@xxx redis]# sort -t, -k4nr memory.csv
总结
现在是手动实现,可以调用阿里云API实现自动采集和分析后入库,前端接入grafana展示,实现对redis数据使用的监控系统化,同时接入钉钉机器人报警主动推送给业务组优化(后续更新)。
参照
redis-rdb-tools
使用rdbtools工具来解析redis dump.rdb文件及内存使用量
使用rdbtools分析redis内存使用相关推荐
- redis内存分析工具rdbtools
当Redis的内存已经快满的时候,我们能做什么呢? 最直接的方法就是分析一下Redis内存的构成,看是哪些键比较大,或者比较多,然后考虑一下对应的功能能不能优化,例如减少超时时间,例如不必要的数据不用 ...
- 内存分析_Redis内存爆炸增长?你需要知道这一套Redis内存分析方法
Redis Redis介绍 NoSQL Redis是当前比较热门的NOSQL数据库之一,和Memcache一样,数据都是缓存在计算机内存中.完全开源免费,遵守BSD协议,是一个高性能的key-valu ...
- Redis 内存分析神器
RDR 简介 RDR 是解析 redis rdbfile 工具.与redis-rdb-tools相比,RDR 是由golang 实现的,速度更快(5GB rdbfile 在我的PC上大约需要2分钟). ...
- Redis内存分析工具
2019独角兽企业重金招聘Python工程师标准>>> RdbTools是一个由于分析Redis dump.rdb文件的工具,有以下功能: 生成所有数据库和key的内存分析报告 把d ...
- 使用rdbtools工具分析redis备份RDB文件
要分析redis的备份RDB文件,rdbtools是首选 安装rdbtools 先看下本机有没有装rdb whereis rdb 没有安装的话就要开始安装了,为因rdbtool是由python写的,所 ...
- Redis内存空间简单分析
背景 最近发现项目中用的 redis 内存消耗很大(但是印象中却以为没有这么多的key的内存消耗才对呀?),使用 info 命令可以看到所有key占用的一些内存大小以及key的数量等等,如下图所示(只 ...
- 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 ...
最新文章
- JS放在博客里面运行
- Oracle 11g安装图文攻略
- android布局边缘加深,Android布局属性详解
- html5 dom api,HTML5 DOM File API
- 学术研究 | 仅仅因为方法 Too Simple 就被拒稿,合理吗?
- ENVI 5.6安装教程及安装包下载
- java jemalloc_jemalloc 快速上手攻略
- python小数乘法计算题_100道小数乘法计算题
- HTML计算平均成绩,成绩平均分怎么算
- 计算机无法访问家庭组内打印机,Win7电脑无法连接共享打印机拒绝访问怎么办...
- 全球及中国军用海岸雷达行业研究及十四五规划分析报告
- 快速部署OpenStack的操作笔记(珍藏版)
- python开发前景如何
- STM32F103C8T6基础开发教程(HAL库)—LED灯1S周期闪烁
- 【Tool工具】LICEcap 推荐 GIf录制工作- 如何简单录制一个gif(Mac Window都可)
- win7 文件夹工具栏
- 对vue生命周期的深入理解
- Xilinx_RAM_IP核的使用
- 1000以内完数、100以内质数 java
- (附源码)php在线考试系统 毕业设计 032028
热门文章
- Go语言详细介绍:logo和版本
- (九)企业分布式微服务云SpringCloud SpringBoot mybatis-服务链路追踪(Spring Cloud Sleuth)...
- Linux运维之--zabbix使用(实时更新)
- 如何设置xshell代理?
- Mac之初~10个快速上手技巧
- 衡量视频序列特性的TI(时间信息)和SI(空间信息)
- 移劢开发者解决方案研究报告——中国开发者生存状况调查
- 【EXLIBRIS】图洛克《收入再分配的经济学》中译本序 【ZZ】
- 程序员必修课--sql思维举重训练
- struts2(2012/2/24)