RDB與AOF的區別

2021-10-11 03:17:50 字數 1301 閱讀 9977

aof和rdb是兩種redis持久化的機制。

rdb:

rdb是將支援當前資料的快照存成乙個資料檔案的持久化機制。

1.在生成快照時,將當前程序fork出乙個子程序.

2.然後再子程序中迴圈所有的資料,將資料寫入到二進位制檔案中。

3.當子程序將快照寫入臨時檔案完畢後,用臨時檔案替換原來的快照檔案,然後子程序退出。

優點:1.一旦採用該方式,那麼你的整個redis資料庫將只包含乙個檔案,這樣非常方便進行備份。比如你可能打算每1天歸檔一些資料。

2.方便備份的同時,我們也很容易的將乙個rdb檔案移動到其他儲存物質上。

3.rdb 可以最大化 redis 的效能:父程序在儲存 rdb 檔案時唯一要做的就是 fork 出乙個子程序,然後這個子程序就會處理接下來的所有儲存工作,父程序無須執行任何磁碟 i/o 操作。

劣勢:如果你想在伺服器上避免資料的丟失,那麼rdb就不適合了,因為rdb檔案需要儲存整個資料集的狀態,因為你可能會在5分鐘才儲存一次rdb檔案,在這種情況下,一旦發生故障停機,你可能會損失好幾分鐘的資料。

每次在儲存rdb的時候,redis都要fork出乙個子程序,並由子程序來進行實際的持久化工作,如果在資料集比較龐大時,fork可能會非常耗時,造成伺服器在那麼一瞬間會停止處理客戶端;雖然aof重寫也需要進行fork,但aof重寫的執行時間間隔有多長,資料的耐久性都不會有任何損失。

aof:

aof: redis 預設不開啟。它的出現是為了彌補rdb的不足(資料的不一致性),所以它採用日誌的形式來記錄每個寫操作,並追加到檔案中。redis 重啟的會根據日誌檔案的內容將寫指令從前到後執行一次以完成資料的恢復工作。aof的工作原理就是是將寫操作追加到檔案中,檔案的冗餘內容會越來越多。所以redis 新增了重寫機制。當aof檔案的大小超過所設定的最大值時,redis就會對aof檔案的內容壓縮。

優點:資料的完整性和一致性更高

缺點:因為aof記錄的內容多,檔案會越來越大,資料恢復也會越來越慢。

總結redis 預設開啟rdb持久化方式,在指定的時間間隔內,執行指定次數的寫操作,則將記憶體中的資料寫入到磁碟中。

rdb 持久化適合大規模的資料恢復但它的資料一致性和完整性較差。

redis 需要手動開啟aof持久化方式,預設是每秒將寫操作日誌追加到aof檔案中。

aof 的資料完整性比rdb高,但記錄內容多了,會影響資料恢復的效率。

redis 針對 aof檔案大的問題,提供重寫的**機制。

若只打算用redis 做快取,可以關閉持久化。

若打算使用redis 的持久化。建議rdb和aof都開啟。其實rdb更適合做資料的備份,留一後手。aof出問題了,還有rdb。

AOF日誌與RDB快照

我們知道 redis 會當作快取使用,因為redis是記憶體資料庫,它把後端資料庫中的資料儲存在記憶體中,然後直接從記憶體中讀取資料,響應速度非常快。但是一旦伺服器宕機,記憶體中的資料將全部丟失。所以對於 redis 來說,實現資料的持久化是至關重要的。目前 redis 的持久化主要有兩大機制 ao...

RDB 與 AOF 抉擇與對比

rdb的啟動優先順序低於aof的啟動優先順序,在宕機的情況下會優先啟動aof rdb使用二進位制的檔案作為快照,所以檔案的體積小點,aof則使用了檔案追加的方式,所以檔案的提及大一些 rdb的恢復速度快,aof的恢復速度慢一些 rdb檔案dump過程中若出現故障,那麼會丟失較多的資料,aof可以有一...

redis持久化RDB與AOF

redis是一種記憶體型資料庫,一旦伺服器程序退出,資料庫的資料就會丟失,為了解決這個問題,redis提供了兩種持久化的方案,將記憶體中的資料儲存到磁碟中,避免資料的丟失。redis提供了rdb持久化的功能,這個功能可以將redis在記憶體中的的狀態儲存到硬碟中,它可以手動執行。也可以再redis....