Redis - 持久化

JavaRecorder發表於2021-05-16

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 檔案的資訊。

優點:丟失資料少

相關文章