1. 程式人生 > 實用技巧 >Redis持久化之RDB持久化

Redis持久化之RDB持久化

Redis持久化

Redis雖然是以一個記憶體資料庫聞名的,但為了提供可靠、安全的功能保障,也是需要有持久化能力的,
Redis有兩種持久化方式:RDB(redis database)持久化和AOF持久化(append only file),其中RDB是Redis預設的持久化方式。

RDB持久化

RDB持久化可以通過呼叫save或者bgsave命令觸發,其中save命令是由redis服務程序執行的,因此是阻塞式的命令,不建議頻繁使用;
bgsave則是由服務程序fork一個程序來呼叫,因此不影響程式執行其他命令(save、bgsave和bgwriteaof除外)。

Redis預設的持久化機制是:

save 900 1
save 300 10
save 60 10000

表示的意思是:
900秒內,有1次更新則觸發bgsave
300秒內,有10次更新則觸發bgsave
900秒內,有10000次更新,則觸發bgsave

RDB持久化檔案

RDB持久化會產生一個dump.rdb檔案,我使用的redis是通過docker建立的,預設在容器內部目錄/data下面

因為dump.rdb檔案是壓縮過的,所以直接用cat或者vi是檢視不到內容的,可以使用一些工具來檢視其內容,我用的是python元件rdbtools
首先安裝一下:

pip3 install rdbtools
pip3 install python-lzf

然後在dump.rdb的目錄使用rdb命令解析並將結果重定向到dump.json中

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

檢視dump.json

當然,這裡並不是dump.rdb中全部的檔案內容,這裡只有資料庫的內容,實際上dump.rdb檔案還定義了檔案頭,檔案版本,結束符和校驗和等等。

參考

書籍

黃健巨集前輩的《Redis設計與實現》

網友連結

https://blog.csdn.net/floatdreamed/article/details/103720986