介紹 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 檔案以還原資料庫狀態。