RDB:Redis DataBase,在指定的時間間隔内将記憶體中的資料集快照寫⼊磁盤,實際操作過程是fork⼀個⼦程序,先将資料集寫⼊臨時檔案,寫入成功後,再替換之前的⽂件,用⼆進制壓縮存儲。
優點:
- 整個Redis資料庫将隻包含⼀個⽂件dump.rdb,友善持久化。
- 容災性好,友善備份。
- 性能最大化,fork子程序來完成寫操作,讓主程序繼續處理指令,是以是 IO 最大化。使用單獨子程序來進行持久化,主程序不會進⾏任何 IO 操作,保證了 redis 的高性能
- 相對于資料集⼤時,比AOF 的啟動效率更高。
缺點:
- 資料安全性低。RDB 是間隔⼀段時間進⾏持久化,如果持久化之間 redis 發⽣故障,會發⽣資料丢失。是以這種⽅式更适合資料要求不嚴謹的時候。
- 由于RDB是通過fork⼦程序來協助完成資料持久化⼯作的,是以,如果當資料集較⼤時,可能會導緻整個伺服器停⽌服務幾百毫秒,甚至是1秒鐘。
- 資料安全,Redis中提供了3中同步政策,即每秒同步、每修改同步和不同步。事實上,每秒同步也是異步完成的,其效率也是非常高的,所差的是⼀旦系統出現當機現象,那麼這⼀秒鐘之内修改的資料将會丢失。而每修改同步,我們可以将其視為同步持久化,即每次發⽣的資料變化都會被立即記錄到磁盤中。
- 通過 append 模式寫⽂件,即使中途伺服器當機也不會破壞已經存在的内容,可以通過 redis check-aof 工具解決資料⼀緻性問題。
- AOF 機制的 rewrite 模式。定期對AOF⽂件進行重寫,以達到壓縮的目的
- AOF 檔案比 RDB 檔案大,且恢複速度慢。
- 資料集大的時候,比rdb 啟動效率低。
- 運作效率沒有RDB高, AOF⽂件比RDB更新頻率高,優先使用AOF還原資料,AOF比RDB更安全也更大,RDB性能比AOF好,如果兩個都配了優先加載AOF。