dir
配置的指定目錄下,文件名是dbfileName
指定。save
和bgsave
。save
:該命令會阻塞Redis服務器,直到RDB的過程完成,已經被廢棄,所以線上不建議使用。bgsave
:每次進行RDB過程都會fork一個子進程,由子進程完成RDB的操做,所以阻塞只會發生在fork階段,通常時間很短。save m n
配置規則自動觸發。debug reload
命令從新加載Redis時, 也會自動觸發save操做。bgsave
。lastsave
命令能夠查看最近一次的RDB時間。bgsave
備份,並把RDB文件拷貝到遠程機器或者文件系統中,用於災難恢復。RDB
恢復數據遠遠快於AOF
的方式。實時持久化
/秒級持久化
。 由於bgsave每次運行都要執行fork操做建立子進程,屬於重量級操做,頻繁執行成本太高。AOF
(append only file) 持久化: 以獨立日誌的方式記錄每次寫命令,重啓時再從新執行AOF文件中的命令達到恢復數據的目的。 AOF的主要做用是解決了數據持久化的實時性, 目前已是Redis持久化的主流方式
。appendonly yes
, 默認不開啓。 AOF文件名經過appendfilename
配置設置, 默認文件名是appendonly.aof
。 保存路徑同RDB持久化方式一致,經過dir
配置指定。命令寫入
、文件同步
、文件重寫
、重啓加載
四個步驟,以下圖:set hello world
這條命 令, 在AOF緩衝區會追加以下文本:*3\r\n$3\r\nset\r\n$5\r\nhello\r\n$5\r\nworld\r\n
aof_buf
中, 還有另外一個好處, Redis能夠提供多種緩衝區 同步硬盤的策略,在性能和安全性方面作出平衡。appendfsync
控制,以下:
always
時, 每次寫入都要同步AOF文件, 在通常的SATA硬盤上,Redis只能支持大約幾百TPS寫入, 顯然跟Redis高性能特性背道而馳,不建議配置。no
,因爲操做系統每次同步AOF文件的週期不可控,並且會加大每次同步硬盤的數據量,雖然提高了性能,但數據安全性沒法保證。everysec
(默認的配置),是建議的同步策略, 也是默認配置,作到兼顧性能和數據安全性。理論上只有在系統忽然宕機的狀況下丟失1秒的數據(固然,這是不太準確的)。bgrewriteaof
命令。auto-aof-rewrite-min-size
和auto-aof-rewrite-percentage
參數肯定自動觸發時機。auto-aof-rewrite-min-size
:表示運行AOF重寫時文件最小體積, 默認爲64MB。auto-aof-rewrite-percentage
:表明當前AOF文件空間(aof_current_size
) 和上一次重寫後AOF文件空間(aof_base_size
) 的比值。aof_current_size
和aof_base_size
能夠在info Persistence
統計信息中查看。del key1
、 hdel key2
等。重寫使用進程內數據直接生成,這樣新的AOF文件只保留最終數據的寫入命令。lpush list a
、 lpush list b
、lpush listc
能夠轉化爲:lpush list a b c
。爲了防止單條命令過大形成客戶端緩衝區溢出,對於list
、 set
、 hash
、 zset
等類型操做,以64個元素爲界拆分爲多條。文本協議
,主要是兼容性好、追加方便、可讀性高可認爲修改修復。RDB
仍是AOF
都是先寫入一個臨時文件,而後經過重命名
完成文件的替換。