如何解析rdb文件

相信大家也都或多或少的了解些redis,知道他是内存性NoSQL数据库。

那么,疑问也就来了,这种内存型数据库的数据在服务器宕机后,数据还会恢复吗?

答案是会恢复的!因为这种内存型数据库也存在它的持久化机制,下面是redis的RDB-持久化触发条件:

其含义如下:

①900秒内如果至少有1个key的值变化,则保存

②300秒内如果至少有10个key的值变化,则保存

③60秒内如果至少有10000个key的值变化,则保存

实际工作当中有同事让我copy一份redis的dump.rdb文件给他,他要查看数据。

那么rdb文件是如何被解析的呢?使用了什么工具呢?

这里就介绍一下最近了解的一个工具,准确的来说是python的一个库【rdbtools】

一.安装方式:

1.进入到python的相应目录,比如:D:\Python\Python36\Scripts

2.打开cmd命令框

3.输入指令:pip install rdbtools

4.安装完成后在cmd中输入指令:rdb 并观察,若有如下图所示则为安装成功

 二.进行解析:

1.进入到dump.rdb文件所在目录并打开cmd,输入如下指令

rdb --command json dump.rdb > dump.json

执行时会报错:提示需要安装python-lzf依赖

同样进入python的目录,比如:D:\Python\Python36\Scripts,打开cmd并输入:pip3 install python-lzf

再次执行解析rdb的指令即可!下面是转格式后的结果:

2.了解rdb命令的相关参数:

这里借鉴下网友的翻译:

-h, –help #显示此帮助消息并退出;
-c FILE, –command=FILE #指定rdb文件;
-f FILE, –file=FILE #指定导出文件;
-n DBS, –db=DBS #解析指定数据库,如果不指定默认包含所有;
-k KEYS, –key=KEYS #指定需要导出的KEY,可以使用正则表达式;
-o NOT_KEYS, –not-key=NOT_KEYS #指定不需要导出的KEY,可以使用正则表达式;
-t TYPES, –type=TYPES #指定解析的数据类型,可能的值有:string,hash,set,sortedset,list;可以提供多个类型,如果没有指定,所有数据类型都返回;
-b BYTES, –bytes=BYTES #限制输出KEY大大小;
-l LARGEST, –largest=LARGEST #根据大小限制的top key;
-e ESCAPE, –escape=ESCAPE #指定输出编码,默认RAW;

3.生成内存报告

输入入下指令:

rdb -c memory dump.rdb --bytes 128 -f dump_memory.csv

在同级目录下生成文件dump_memory.csv

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章