1. 傳統 AOF vs AOF-RDB 混合方式的差異
AOF(Append-Only File) 是 Redis 的持久性(persistence) 方式之一,將數據變更記錄到文件中,以便在發生故障時能夠恢復數據。
👉 如果需要 AOF 概念的詳細說明,建議先查看之前的文章
Redis AOF Rewrite: 性能優化與數據保存 。
本文將 集中分析傳統 AOF 方式與 Redis 7.0 以上引入的 AOF-RDB 混合方式的差異。
2. Redis 7.0 以上:引入 AOF-RDB 混合方式
為了解決傳統 AOF 方式的 低效磁碟使用及較慢的恢復速度 問題,Redis 7.0 以上預設引入了 AOF-RDB 混合方式。
這種方式 將 RDB 快照和 AOF 結合,以更優化的方式存儲數據。
✅ AOF-RDB 混合方式的運作原理
- 初始狀態保存 → Redis 在保存 AOF 時,首先生成 RDB 快照,並將其保存到
appendonly.aof.X.base.rdb
文件中。 - 隨後變更保存 → 隨後的所有變更記錄到
appendonly.aof.X.incr.aof
文件中。 - 數據恢復時 → 當 Redis 重啟時,首先加載 RDB 然後反映 AOF 差異以恢復到最新狀態。
3. AOF-RDB 混合方式的文件結構
📌 與傳統的 appendonly.aof 單一文件方式不同,Redis 7.0 會生成如下文件。
sudo ls -l /var/lib/redis/appendonlydir
-rw-rw---- 1 redis redis 1146587 Feb 19 12:37 appendonly.aof.2.base.rdb # RDB 快照文件
-rw-r----- 1 redis redis 41279742 Feb 19 20:05 appendonly.aof.2.incr.aof # AOF 差異文件 (隨後的變更保存)
-rw-r----- 1 redis redis 88 Feb 19 12:37 appendonly.aof.manifest # 管理 AOF 相關元數據的文件
appendonly.aof.X.base.rdb
→ 保存當前 Redis 記憶體狀態的 RDB 快照文件appendonly.aof.X.incr.aof
→ 隨後的 變更記錄的 AOF 文件appendonly.aof.manifest
→ 管理 AOF 文件列表的 元數據文件
🚀 結論:Redis 7.0 以上預設使用 AOF-RDB 混合方式,因此不會生成 appendonly.aof 單一文件。
4. 傳統 AOF vs AOF-RDB 混合方式比較
比較項目 | 傳統 AOF (appendonly.aof) | AOF-RDB 混合 (appendonly.aof.X.base.rdb) |
---|---|---|
文件結構 | 一個 appendonly.aof 文件 | RDB + AOF 混合結構 |
記錄方式 | 按順序保存所有命令 | 保存 RDB 快照 + AOF 差異 |
性能 | 隨時間變慢 | 更快且做了優化 |
Redis 重啟時恢復速度 | 較慢 (執行所有命令) | 較快 (先加載 RDB 然後反映 AOF) |
儲存空間 | 大小不斷增加 | 基於 RDB 進行優化 |
磁碟 I/O 負擔 | 因保存所有命令而加重負擔 | 基於 RDB,負擔減少 |
📌 結論:
- 傳統 AOF 方式 數據可靠性高,但存在性能和磁碟用量問題。
- AOF-RDB 混合方式的優點在於 快速恢復、有效的儲存空間使用、較低的磁碟 I/O 負擔。
- 在大多數運行環境中,建議使用 AOF-RDB 混合方式。 🚀
5. 使用 AOF-RDB 混合方式時是否需要 RDB 設定?
👉 是的,需要 RDB 相關的設定!
在 AOF-RDB 混合方式中,因為基於 RDB,因此必須在 redis.conf
中正確應用 RDB 相關設定。
✅ AOF-RDB 混合方式中需確認的設定
appendonly yes # 啟用 AOF
aof-use-rdb-preamble yes # 使用 AOF-RDB 混合方式 (預設值)
save 900 1 300 10 60 10000 # RDB 快照生成週期
🚨 如果沒有 RDB 設定,AOF-RDB 混合方式可能無法正常運作!
將 aof-use-rdb-preamble
設定為 no
將導致使用傳統的 aof
單一文件方式。
6. 結論:如何選擇 Redis AOF 方式
- 在 Redis 7.0 以上,預設 AOF-RDB 混合方式為推薦使用
- 相比傳統 AOF 方式,具有 快速恢復速度、較少的儲存空間使用、較低的磁碟 I/O 負擔 的優勢
- 如 RDB 設定未應用,混合方式可能無法正常運作
- 在金融、事務系統等極需數據可靠性的場合,傳統 AOF 方式可能更有優勢
🚀 在大多數運行環境中,AOF-RDB 混合方式比傳統 AOF 方式更加高效,因此建議繼續使用。
Add a New Comment