aof 和 rdb 是 redis 持久化的兩種方式。我們看看它們的特點和具體應用場景區別。
此博客將逐步遷移到作者新的博客,可以點擊此處進入。
持久化特點
aof
- aof 是寫命令追加到持久化文件的方式。
- aof 支持幾種持久化策略,其中每秒數據增量存盤一次效率比較高。
- aof 支持 rdb 混合型存儲(需要重寫處理)。
- aof 一定程度上記錄了 redis 的寫操作流水,一段時間內文件冗餘數據比較大需要重寫解決問題。
rdb
- rdb 快照,一個時間點的 redis 內存數據全盤落地(快照)。
- rdb 文件是二進制數據壓縮文件,數據落地速度快(相對),體積小。
- 因爲 redis 內存是全部數據落地,操作頻率不能太高,通過配置持久化頻率,幾分鐘到幾小時不等。
使用場景區別
根據 aof 和 rdb 持久化特點,我們看看應用場景主要區別:
-
數據恢復
redis 服務異常,aof 比 rdb 更有利於數據恢復。aof 默認每秒將數據增量追加到文件末存盤一次,rdb 是一個時間點的數據快照,時間跨度比較大。
-
數據備份
rdb 是 redis 內存數據快照,速度快,體積小。更適合於數據備份存儲。
-
redis 服務啓動速度
redis 啓動加載 rdb 文件 比 aof 快。 因爲 aof 文件有冗餘命令,rdb 是數據集合。
-
持久化速度
aof 默認每秒存盤和 rdb 持久化都是異步存儲,基本不影響主線程主邏輯功能。如果 aof 採用寫命令實時存盤,將會嚴重影響 redis 服務性能。
-
集羣節點間全量同步
集羣節點間數據全量同步,需要拷貝服務進程的內存數據,根據 rdb 持久化特點:速度快,體積小,顯然 rdb 更適合於集羣間數據傳輸。
持久化詳細文檔
redis 持久化 aof 和 rdb 區別,詳細文檔可以參考 redis 作者的文章 Redis Persistence
鏈接可能被牆,用國內搜索引擎搜索下
要了解更多的細節,可以查看 redis 源碼實現。redis 持久化源碼理解,可以參考我的帖子:
- 更精彩內容,可以關注我的博客:wenfh2020.com