深入剖析Redis RDB持久化機制

jieforest發表於2012-10-31
本文pesiwang同學的投稿分享,對Redis RDB檔案持久化的內部實現進行了原始碼分析。

本文分析原始碼基於 Redis 2.4.7 stable 版本。下面是其文章原文:

rdb是redis儲存記憶體資料到磁碟資料的其中一種方式(另一種是AOF)。Rdb的主要原理就是在某個時間點把記憶體中的所有資料的快照儲存一份到磁碟上。在條件達到時通過fork一個子程式把記憶體中的資料寫到一個臨時檔案中來實現儲存資料快照。在所有資料寫完後再把這個臨時檔案用原子函式rename(2)重新命名為目標rdb檔案。這種實現方式充分利用fork的copy on write。

另外一種是通過save命令主動觸發儲存資料快照,這種是阻塞式的,即不會通過生成子程式來進行資料集快照的儲存。

相關配置

CODE:

save 經過多少秒且多少個key有改變就進行,可以配置多個,只要有一個滿足就進行儲存資料快照到磁碟

CODE:

rdbcompression yes儲存資料到rdb檔案時是否進行壓縮,如果不想可以配置成’no’,預設是’yes’,因為壓縮可以減少I/O,當然,壓縮需要消耗一些cpu資源。

CODE:

dbfilename dump.rdb快照檔名

CODE:

dir ./快照檔案所在的目錄,同時也是AOF檔案所在的目錄

來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/301743/viewspace-747969/,如需轉載,請註明出處,否則將追究法律責任。

相關文章