1. RDB方式 RDB方式的持久化是經過快照(snapshotting )完成的,當符合必定條件時Redis會自動將內存中的全部數據進行快照並存儲在硬盤上。進行快照的條件能夠由用戶在配置文件中自定義,由兩個參數構成:時間和改動的鍵的個數。當在指定的時間內被更改的鍵的個數大於指定的數值時就會進行快照。RDB是Redis默認採用的持久化方式,在配置文件中已經預置了3個條件: save 900 1
save 300 10
save 60 10000
save參數指定了快照條件,能夠存在多個條件,條件之間是「或」的關係。如上所說,save 900 1的意思是在15分鐘(900秒鐘)內有至少一個鍵被更改則進行快照。 若是想要禁用自動快照,只須要將全部的save參數刪除便可。 Redis默認會將快照文件存儲在當前目錄的dump.rdb文件中,能夠經過配置dir和dbfilename兩個參數分別指定快照文件的存儲路徑和文件名。 Redis啓動後會讀取RDB快照文件,將數據從硬盤載入到內存。根據數據量大小與結構和服務器性能不一樣,這個時間也不一樣。 經過RDB方式實現持久化,一旦Redis異常退出,就會丟失最後一次快照之後更改的全部數據。這就須要開發者根據具體的應用場合,經過組合設置自動快照條件的方式來將可能發生的數據損失控制在可以接受的範圍。若是數據很重要以致於沒法承受任何損失,則能夠考慮使用AOF方式進行持久化。安全
2. AOF 方式 默認狀況下Redis沒有開啓AOF(append only file)方式的持久化,能夠經過appendonly 參數開啓: appendonly yes
開啓AOF持久化後每執行一條會更改Redis中的數據的命令,Redis就會將該命令寫入硬盤中的AOF文件。AOF文件的保存位置和RDB文件的位置相同,都是經過dir參數設置的,默認的文件名是appendonly.aof ,能夠經過appendfilename參數修改: append file name appendonly.aof
在Redis中咱們能夠經過appendfsync參數設置同步的時機:服務器
appendfsync always (每次執行寫入都會執行同步,這是最安全也是最慢的方式)app
appendfsync everysec (默認狀況下Redis採用everysec 規則,即每秒執行一次同步操做)性能
appendfsync no (no表示不主動進行同步操做,而是徹底交由操做系統來作(即每30秒一次),這是最快但最不安全的方式)操作系統
通常狀況下使用默認值everysec就足夠了,既兼顧了性能又保證了安全。Redis容許同時開啓AOF和RDB,既保證了數據安全(AOF)又使得進行備份(RDB)等操做十分容易。此時從新啓動Redis後Redis會使用AOF文件來恢復數據,由於AOF方式的持久化可能丟失的數據更少。