Redis持久化策略之AOF

2021-10-05 13:22:29 字數 1118 閱讀 7195

預設的 redis 啟動配置檔案中,會有這麼兩條配置:

redis 預設配置是 everysec,即每秒重新整理一次快取區。

所以,理論上來說,隨著 redis 伺服器執行時間的持續,生成的 aof 檔案只會越來越大,redis 提供 aof 重寫策略幫助優化和壓縮 aof 檔案。

比如:

set a "a"

set b "b"

set c "c"

del a

del b

正常情況下,aof 檔案中會儲存著五條命令的 log,然後資料恢復的時候依次執行即可。而當你啟動 aof 重寫後,實際上我們的 aof 檔案中只有 set c 「c」 這一條命令的 log。

以上只是乙個簡單的示例,實際上 aof 重寫達到的效率比這優秀的多的多,往往能將幾百條甚至幾千條的命令日誌,重寫優化成個位數。帶給我們最直觀的好處就是,aof 檔案體積變小,資料恢復速度變快。

一般來說,我們可以通過向 redis 伺服器傳送 bgrewriteaof 命令觸發伺服器對 aof 檔案進行重寫,如果當前有正在執行的重寫子程序,則本次重寫會推遲執行,否則,直接觸發一次重寫。

除此之外,我們還可以在配置檔案中配置 aof 檔案達到多大, 自動觸發檔案重寫。

因為 aof 檔案重寫一樣是 fork 子程序並由子程序處理的,主程序依然提供服務,所以 redis 還提供一塊重寫緩衝區,當發現有子程序正在進行 aof 檔案重寫,最新的請求命令除了會新增到aof 緩衝區,還會新增進aof 重寫緩衝區,當子程序完成重寫任務後,主程序阻塞式將重寫緩衝區的命令日誌新增進最新的 aof 檔案中。

配置auto-aof-rewrite-percentage配置了當 aof 檔案相較於上一版本的 aof 檔案大小的百分比達到多少時觸發 aof 重寫。舉個例子,auto-aof-rewrite-percentage 選項配置為 100,上一版本的 aof 檔案大小為 100m,那麼當我們的 aof 檔案達到 200m 的時候,觸發 aof 重寫。

auto-aof-rewite-min-size配置了最小能容忍 aof 檔案大小,超過這個大小必須進行 aof 重寫。

注意2, 3 條需要同時滿足才能觸發

redis持久化之AOF持久化

aof與rdb持久化通過儲存資料庫中的鍵值對來記錄資料庫狀態不同,aof持久化是通過儲存redis伺服器所執行的寫命令來記錄資料庫狀態的。被寫入aof檔案的所有命令都是以redis的命令請求協議格式儲存的。當aof持久化功能處於開啟狀態,伺服器在執行完乙個寫命令之後,會以協議格式將被執行的寫命令追加...

redis持久化之AOF

號外號外,新建 redis 交流討論群 332160890,歡迎加入!一 說明 1.1aof 相關配置項 配置項作用aof rewrite perc 百分比閾值,當 aof的增量超過這個閾值時,開始 aof的 rewrite操作 aof rewrite min size 當aof 的檔案大小超過該值...

Redis持久化之AOF

aof是redis的另一種持久化方式。什麼是aof?aof的實現原理 aof相關配置 redis的配置檔案 配置檔案的第934行 everysec 將aof buf快取區的所有內容寫入到aof檔案,如果上次同步aof檔案的時間與當前時間大於1秒,那麼會再次對aof檔案進行同步,同步操作由乙個執行緒專...