1. 程式人生 > >redis的AOF持久化配置

redis的AOF持久化配置

1.AOF持久化配置

AOF持久化,預設是關閉的,預設開啟的持久化配置是RDB

在redis.config配置appendonly yes ,可以開啟AOF持久化

在生產環境中,一般來說AOF是要開啟的,除非對一兩分鐘

沒有影響。

        開啟AOF機制之後,redis沒收到一次寫命令,就會寫入到

日誌檔案中,當然現寫入到OS cache 中,然後每隔一定的時間

在fsync一下,把命令寫入到磁碟 中。

       如果AOF和RDB都開啟了,redis 重啟的時候,會優先通過

AOF進行資料恢復的,因為AOF資料比較完整。

 

     AOF有三種fsync策略:

always:每次寫入一條資料,立即將這個資料fsync寫到磁碟上去(效能很差)

everysec:每秒將os cache記憶體中的資料fsync到磁碟(生產環境使用這個策略,QPS能達到上萬)

no : 僅僅將資料寫入到os cache就撒手不管了,os 會根據自己的策略把資料寫入到磁碟,不可控

 

AOF的rewrite,redis中的資料是有限的,很多資料會自動過期,也可能會被使用者刪掉,可能會被redis用快取清楚的演算法清楚掉。

AOF會自動每隔一定的時間,做rewrite操作。

rewrite過程:


(1)redis fork一個子程序
(2)子程序基於當前記憶體中的資料,構建日誌,開始往一個新的臨時的AOF檔案中寫入日誌
(3)redis主程序,接收到client新的寫操作之後,在記憶體中寫入日誌,同時新的日誌也繼續寫入舊的AOF檔案
(4)子程序寫完新的日誌檔案之後,redis主程序將記憶體中的新日誌再次追加到新的AOF檔案中
(5)用新的日誌檔案替換掉舊的日誌檔案