Redis 提供了兩種主要的數據持久化方式:RDB(Redis DataBase)和 AOF(Append Only File)。下面分別介紹這兩種方式的使用:
RDB 是 Redis 默認的持久化方式。它會在指定的時間間隔內生成數據集的時間點快照(snapshot)。
在 redis.conf
文件中,可以通過以下配置來設置 RDB 持久化:
# 設置在 900 秒(15 分鐘)之后,如果至少有 1 個 key 發生了變化,則自動觸發 RDB 快照
save 900 1
# 設置在 300 秒(5 分鐘)之后,如果至少有 10 個 key 發生了變化,則自動觸發 RDB 快照
save 300 10
# 設置在 60 秒(1 分鐘)之后,如果至少有 10000 個 key 發生了變化,則自動觸發 RDB 快照
save 60 10000
# 禁用 RDB 持久化
save ""
除了配置自動觸發 RDB 快照外,還可以通過 SAVE
或 BGSAVE
命令手動觸發 RDB 快照:
SAVE
:阻塞 Redis 服務器,直到 RDB 進程完成,期間無法處理客戶端請求。BGSAVE
:在后臺異步執行 RDB 快照,不會阻塞 Redis 服務器。SAVE
BGSAVE
AOF 持久化記錄服務器接收到的所有寫操作命令,并在服務器啟動時,通過重新執行這些命令來重建數據集。
在 redis.conf
文件中,可以通過以下配置來啟用 AOF 持久化:
# 啟用 AOF 持久化
appendonly yes
# 設置 AOF 文件名
appendfilename "appendonly.aof"
# 設置 AOF 文件同步策略
appendfsync everysec # 每秒同步一次,性能和持久化之間取得平衡
appendfsync always # 每次寫操作都同步,最安全但性能較差
appendfsync no # 不主動同步,由操作系統決定何時同步,性能最好但安全性最低
AOF 文件會隨著時間的推移變得越來越大,為了控制文件大小,可以定期進行 AOF 重寫。Redis 會根據當前數據集生成一個新的 AOF 文件,替換舊的 AOF 文件。
可以通過 BGREWRITEAOF
命令手動觸發 AOF 重寫:
BGREWRITEAOF
為了兼顧性能和數據安全性,可以同時啟用 RDB 和 AOF 持久化。在這種情況下,Redis 會優先使用 AOF 文件來恢復數據,因為 AOF 文件通常比 RDB 文件更完整。
在 redis.conf
文件中,可以設置:
# 啟用 AOF 持久化
appendonly yes
# 禁用 RDB 持久化
save ""
auto-aof-rewrite-percentage
和 auto-aof-rewrite-min-size
來控制 AOF 文件的重寫。通過合理配置和使用 RDB 和 AOF,可以有效地保證 Redis 數據的持久化和安全性。