Redis – 持久化

Redis 的持久化方式有兩種:RDB、AOF

RDB

RDB 是某個時間點數據的快照,可以定期全量備份。

原理:

  • 父進程 fork 子進程
  • 子進程將數據寫入臨時 RDB 文件中
  • 子進程完成寫入時,用臨時 RDB 替換掉舊的 RDB
  • 假如1點開始備份數據,1點以後的數據不會被備份,因為子進程看不到父進程的數據

優點:恢復速度快。

缺點:窗口期數據易丟失。

AOF

AOF 記錄每次寫操作的日誌。

如果每次寫操作都記錄日誌,最終的 AOF 文件就會無限大,如何解決這個問題呢?

  • 重寫。Redis 擇時將記憶體中的數據備份到臨時 AOF 文件中,備份時點之後的數據先寫到快取中,臨時 AOF 文件完成寫入之後,再將快取中的數據寫入臨時 AOF 文件,最後用臨時 AOF 文件替換掉舊的 AOF 文件。
  • 從 4.x 版本開始 AOF 文件支援 RDB+AOF 的混合體,重寫是寫 RDB,然後在 AOF 文件開頭記錄 RDB 文件的資訊。

優點:丟失數據少

Tags: