如何解析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

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