Redis工具之redis_rdb_tools

Stella981
• 阅读 690

  redis_rdb_tools工具的介绍:

解析redis的dump.rdb文件,分析内存,以JSON格式导出数据。|
提供的功能有:
  1. 生成内存报告
  2. 转储文件到JSON
  3. 使用标准的diff工具比较两个dump文件

Rdbtools是以python语言开发的。

一)安装

  1, pypi安装(推荐)

pip3 install rdbtools

  2,源码安装

# wget https://github.com/sripathikrishnan/redis-rdb-tools/archive/master.zip
# unzip master
# cd redis-rdb-tools-master/
# python3 setup.py install
Downloading/unpacking rdbtools
  Downloading rdbtools-0.1.5.tar.gz
  Running setup.py egg_info for package rdbtools

    warning: no files found matching 'README.textile'
Installing collected packages: rdbtools
  Running setup.py install for rdbtools

    warning: no files found matching 'README.textile'
    Installing redis-memory-for-key script to /usr/local/python/bin
    Installing redis-profiler script to /usr/local/python/bin
    Installing rdb script to /usr/local/python/bin
Successfully installed rdbtools
Cleaning up...

二) dump文件数据转换

rdb --help
Usage: rdb [options] /path/to/dump.rdb

Example : rdb --command json -k "user.*" /var/redis/6379/dump.rdb

Options:
  -h, --help            show this help message and exit
  -c FILE, --command=FILE
                        Command 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_KEYS
                        Keys Not to export. This can be a regular expression
  -t TYPES, --type=TYPES
                        Data types to include. Possible values are string,
                        hash, set, sortedset, list. Multiple typees can be
                        provided.                      If not specified, all
                        data types will be returned
  -b BYTES, --bytes=BYTES
                        Limit memory output to keys greater to or equal to
                        this value (in bytes)
  -l LARGEST, --largest=LARGEST
                        Limit memory output to only the top N keys (by size)
  -e ESCAPE, --escape=ESCAPE
                        Escape strings to encoding: raw (default), print,
                        utf8, or base64.

  1. 解析dump文件并以json格式标准输出

rdb --command json dump.rdb

  2. 只解析符合正则的keys

rdb --command json --key "key1.*" dump.rdb

  3. 只解析一a开头的hash且位于2号库

rdb --command json --db 2 --type hash --key "a.*" dump.rdb

三)生成内存报告

生成CSV格式的内存报告。包含的列有:数据库ID,数据类型,key,内存使用量(byte),编码。内存使用量包含key、value和其他值。
注意:内存使用量是近似的。在一般情况下,略低于实际值。
可以根据key或数据库ID或数据类型对报告的内容进行过滤。

内存报告有助于检测是否是应用程序逻辑导致的内存泄露,也有助于优化reids内存使用情况。

rdb -c memory dump.rdb > redis_memory_report.csv

四)单个key使用内存量

有时候,需要查询某个key所使用的内存。如果全部导出来在查找将是很愚蠢且耗时的。对于这种情景,可以使用redis-memory-for-key命令。
如果出现下面信息,需要安装redis模块。redis-memory-for-key依赖redis-py包。

  1.安装

pip3 install redis

redis-memory-for-key 
Usage: redis-memory-for-key [options] redis-key
Examples :
redis-memory-for-key user:13423
redis-memory-for-key -s localhost -p 6379 user:13423


redis-memory-for-key: error: Key not specified

  2.使用

redis-memory-for-key -s 127.0.0.1 key1

五)比较rdb文件

rdb --command diff dump.rdb | sort > dump1.txt
rdb --command diff dump.rdb | sort > dump2.txt

diff dump1.txt  dump2.txt
点赞
收藏
评论区
推荐文章
blmius blmius
2年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
Easter79 Easter79
2年前
swap空间的增减方法
(1)增大swap空间去激活swap交换区:swapoff v /dev/vg00/lvswap扩展交换lv:lvextend L 10G /dev/vg00/lvswap重新生成swap交换区:mkswap /dev/vg00/lvswap激活新生成的交换区:swapon v /dev/vg00/lvswap
Stella981 Stella981
2年前
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解
Opencv中Mat矩阵相乘——点乘、dot、mul运算详解2016年09月02日00:00:36 \牧野(https://www.oschina.net/action/GoToLink?urlhttps%3A%2F%2Fme.csdn.net%2Fdcrmg) 阅读数:59593
Wesley13 Wesley13
2年前
Java获得今日零时零分零秒的时间(Date型)
publicDatezeroTime()throwsParseException{    DatetimenewDate();    SimpleDateFormatsimpnewSimpleDateFormat("yyyyMMdd00:00:00");    SimpleDateFormatsimp2newS
Wesley13 Wesley13
2年前
P2P技术揭秘.P2P网络技术原理与典型系统开发
Modular.Java(2009.06)\.Craig.Walls.文字版.pdf:http://www.t00y.com/file/59501950(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.t00y.com%2Ffile%2F59501950)\More.E
Stella981 Stella981
2年前
KVM调整cpu和内存
一.修改kvm虚拟机的配置1、virsheditcentos7找到“memory”和“vcpu”标签,将<namecentos7</name<uuid2220a6d1a36a4fbb8523e078b3dfe795</uuid
Wesley13 Wesley13
2年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Wesley13 Wesley13
2年前
00:Java简单了解
浅谈Java之概述Java是SUN(StanfordUniversityNetwork),斯坦福大学网络公司)1995年推出的一门高级编程语言。Java是一种面向Internet的编程语言。随着Java技术在web方面的不断成熟,已经成为Web应用程序的首选开发语言。Java是简单易学,完全面向对象,安全可靠,与平台无关的编程语言。
Wesley13 Wesley13
2年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
4个月前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这