1. 程式人生 > 其它 >Redis 宕機了,快取的資料怎麼辦?

Redis 宕機了,快取的資料怎麼辦?

Redis 持久化兩板斧,AOF、RDB

為了避免宕機導致資料丟失,Redis 使用了持久化,有 AOF、RDB 和混合三種方式。

AOF

AOF,以日誌的形式記錄所有寫命令。

寫命令會先追加到 AOF 緩衝區末尾,再寫到磁碟的 AOF 檔案中。

當 AOF 檔案過大時,Redis 會進行重寫,直接根據資料的最新狀態,生成寫命令作為新日誌。

RDB

AOF 雖然保證可靠,但恢復時,需要執行所有寫命令,速度會較慢,於是就有了 RDB。

RDB,把某一時刻的記憶體快照儲存到磁碟。恢復時,只需把 RDB 檔案讀入記憶體,速度比 AOF 快得多。

底層 Redis 提供了 save 和 bgsave 兩個命令來生成 RDB 檔案。

save 在主執行緒中執行,而 bgsave 是 fork 子程序來執行,避免對主執行緒的阻塞,效能更好。

混合

RDB 雖然恢復速度快,但不保證可靠。

針對這個問題,Redis 4.0 中增加了一個混合使用 AOF 和 RDB 的方法。

先讓 RDB 以一定的頻率執行,然後在兩次快照間,使用 AOF 記錄寫命令。

如何選用呢?

實際使用時,如果資料不能丟失,那就用混合。如果允許分鐘級別的丟失,可以只用 RDB。

參考:
04 | AOF日誌:宕機了,Redis如何避免資料丟失?
05 | 記憶體快照:宕機後,Redis如何實現快速恢復?