redis 的持久化有兩種方式:rdb全量持久化和aof增量持久化;redis
AOF優先級更高,在AOF開啓狀態下,且存在AOF文件,優先使用AOF恢復數據 ;數據庫
服務器啓動時,若未開啓AOF持久化,則自動加載rdb文件進行數據恢復;服務器
經過配置文件中的配置項進行開啓AOF功能:app
appendfsync
配置選項控制
always
每一個事件循環都會將aof_buf中的內容寫入並同步到aof文件everysec
將aof_buf中的內容寫入文件,並判斷上次同步的時間,超過一秒(默認)就同步no
將aof_buf中的內容寫入到文件,什麼時候同步由操做系統決定由於aof文件中記錄的是全部寫命令,所以數據頻繁變化時冗餘較大,爲解決此問題,引入aof重寫功能;操作系統
注:aof重寫並不分析aof文件,而是依據當前的數據快照生成寫命令,替換掉原來的aof文件;code
aof由子進程在後臺重寫,帶來新的問題,在重寫期間產生的新的寫命令,會形成數據庫與aof文件中的數據不一致;爲此,redis 設置了一個aof重寫緩衝區,這個緩衝區在建立執行重寫任務的子進程後啓用,當redis執行完命令,會同時記錄到aof緩衝區和aof重寫緩衝區;進程