Redis支持兩種持久化:RDB和AOF模式redis
1、名詞解釋:服務器
RDB:持久化能夠在指定的時間間隔內生成數據集的時間點快照(point-in-time snapshot)。
AOF:持久化記錄服務器執行的全部寫操做命令,並在服務器啓動時,經過從新執行這些命令來還原數據集。app
AOF 文件中的命令所有以 Redis 協議的格式來保存,新命令會被追加到文件的末尾。 Redis 還能夠在後臺對 AOF 文件進行重寫(rewrite)性能
使得 AOF 文件的體積不會超出保存數據集狀態所需的實際大小。日誌
PDB和AOF的優先級:進程
若是同時開啓RDB和AOF模式,AOF的優先級要比RDB高:
Redis 還能夠同時使用 AOF 持久化和 RDB 持久化。 在這種狀況下, 當 Redis 重啓時, 它會優先使用 AOF 文件來還原數據集。it
由於 AOF 文件保存的數據集一般比 RDB 文件所保存的數據集更完整。class
AOF 的方式有點像ORCAL的邏輯備庫!
AOF redis 還會在後臺對數據進行重寫,好比set key1 , set key2 ,其實set key1 沒用,這樣就能夠把set key1 刪掉了。這樣保存下來的數據集就很小了能夠壓縮了!
你甚至能夠關閉持久化功能,讓數據只在服務器運行時存在。後臺
2、RDB&AOF優缺點im
RDB的優缺點:優勢:一、緊湊易於備份,他就一個文件。二、RDB能夠最大化redis性能、父進程無需作任何操做只須要for一個子進程便可三、恢復比AOF塊缺點:一、數據完整性:若是很是注重數據的完整性,那麼RDB就不行,雖然他是一個point-in-time 的快照方式,可是在快照的過程當中,redis重啓了,那麼在快照中的這些數據將會丟失二、數據很是龐大後,很是耗CPU和時間,那麼redis講可能down掉1秒鐘設置更長。AOF的優缺點:優勢:一、 使用 AOF 持久化會讓 Redis 變得很是耐久,AOF默認的每一秒追加一次也能夠修改他的方式沒執行一次命令追加一次,因此你最多丟失1秒鐘的數據二、 AOF 文件是一個只進行追加操做的日誌文件(append only log)三、 Redis 能夠在 AOF 文件體積變得過大時,自動地在後臺對 AOF 進行重寫缺點:一、對於相同的數據集來講,AOF 文件的體積一般要大於 RDB 文件的體積。二、 根據所使用的 fsync 策略,AOF 的速度可能會慢於 RDB