redis-rdb-tools工具

原文链接: https://my.oschina.net/momomo/blog/3067124

工具基本说明

工具主要通过解析redis的dump.rdb文件,分析占用内存,以JSON格式导出数据。提供的功能有:

  1. 生成内存报告
  2. 转储文件到JSON
  3. 使用标准的diff工具比较两个dump文件 Rdbtools是以python语言开发的。

工具安装

  • 下载工具源码 wget https://github.com/sripathikrishnan/redis-rdb-tools/archive/master.zip

  • 下载提速工具 pip install python-lzf

  • 安装rdb工具,项目根目录 python setup.py install

指令说明

主要命令

  • 生成csv分析报告 rdb -c memory ./dump.rdb > redis_memory_report.csv

  • 生成json rdb -c json ./dump.rdb > redis_json_report.json

  • 比较dump

rdb -c diff ./dump1.rdb | sort > dump1.txt
rdb -c diff ./dump2.rdb | sort > dump2.txt
kdiff3 dump1.txt dump2.txt

注:需先安装kdiff3,指令:yum install kdiff3

其他命令

代码分析时一同说明

源码说明

分三个部分来讲:rdb解析入口rdb.py,call回调,rdb解析器parser.py

rdb解析入口rdb.py

#1 指令说明
#2 参数准备
#3 为解析器配置合适的回调方法
#4 执行解析
#这边仅解读步骤3
def main():
	......
	try:
		callback = {
		'diff': lambda f: DiffCallback(f, string_escape=options.escape),
		'json': lambda f: JSONCallback(f, string_escape=options.escape),
		'justkeys': lambda f: KeysOnlyCallback(f, string_escape=options.escape),
		'justkeyvals': lambda f: KeyValsOnlyCallback(f, string_escape=options.escape),
		'memory': lambda f: MemoryCallback(PrintAllKeys(f, options.bytes, options.largest),64, string_escape=options.escape),
		'protocol': lambda f: ProtocolCallback(f, string_escape=options.escape)
		}[options.command](out_file_obj)
	except Exception, e:
		eprint(''+str(e))
		raise Exception('Invalid Command %s' % options.command)
	......
	parser = RdbParser(callback, filters=filters)
	......

自定义回调

自定义解析器

转载于:https://my.oschina.net/momomo/blog/3067124

你可能感兴趣的:(redis-rdb-tools工具)