Redis的資料持久化

真正的飛魚發表於2022-12-20

介紹 Redis 的資料持久化方案

Redis 的資料持久化主要有兩大機制,AOF 日誌和 RDB 快照。

  • AOF 持久化是透過儲存 Redis 伺服器所執行的寫命令來記錄資料庫狀態。
  • RDB 持久化是透過儲存資料庫中的鍵值對來記錄資料庫狀態。

根據伺服器是否啟用了 AOF 持久化功能, 伺服器載入資料時所使用的目標檔案會有所不同:

  • 如果伺服器啟用了 AOF 持久化功能, 那麼伺服器使用 AOF 檔案來還原資料庫狀態。
  • 如果伺服器沒有啟用 AOF 持久化功能,那麼伺服器使用 RDB 檔案來還原資料庫狀態。

AOF 和 RDB 的優劣侷限

AOF 日誌相比 RDB 快照的優勢:

  • AOF 對系統的效能影響更小:AOF 只是追加日誌檔案,而 RDB 是對所以鍵值對的快照,因此一次 AOF 操作比 RDB 對系統的效能影響更小,速度比 RDB 要快,消耗的記憶體較少。

AOF 日誌相比 RDB 快照的劣勢:

  • AOF 載入檔案的速度更慢:AOF 儲存寫命令,而 RDB 儲存儲存鍵值對來記錄資料庫狀態,因此載入 AOF 檔案的速度比載入 RDB 檔案的速度更慢。
  • AOF 檔案的體積更大:儲存相同的資料庫狀態,AOF 檔案比 RDB 檔案的體積更大。

AOF 和 RDB 混合持久化

在 Redis4.0 後支援混合持久化方式,如果使用混合持久化:

  • 當伺服器執行寫命令後,Redis 會以 AOF 持久化方式將命令寫回 incr.aof 檔案。
  • 當進行 AOF 檔案重寫時,Redis 會以 RDB 持久化方式將當前資料庫狀態儲存到名為 base.aof 檔案,然後再將 AOF 重寫緩衝區中的所有內容寫入 incr.aof 檔案。
  • 當 Redis 伺服器重啟後,將載入 base.aof 和 incre.aof 檔案以還原資料庫狀態。

相關文章