Redis
是現現在比較火熱的一款緩存產品,相較於Memcache
等其餘產品,它的優點在於豐富的數據類型,以及它的持久化。redis
正題算法
Redis
支持兩種數據持久化方案,一種是RDB(Redis DataBase)
快照,還有一種是AOF(Append Only File)
,這裏給你們先介紹第一張RDB
快照的方式:緩存
RDB
?RDB
是Redis
提供的一種持久化方案,它能在指定的時間間隔內將內存中的數據集快照寫入磁盤。解析:Redis
會單首創建一個子進程來進行持久化,會先將數據寫入到一個臨時文件,待持久化過程結束了,再用這個臨時文件替換上次持久化好的文件,而整個過程當中,主進程是不進行任何IO操做的。服務器
在Redis
配置文件redis.conf
中找到以下節點能夠進行配置:異步
在上面的配置中,save
定義了觸發自動持久化條件,官方註釋也說的很明確了,save senconds changes
表示,在指定的時間內,進行了多少次操做就會進行保存到磁盤中,默認有三個定義,分別爲:900秒(15分鐘)內執行1次操做或者300秒(5分鐘)內執行10次操做,或者60秒內執行10000次操做。只要知足其中一個都會進行持久化,也能夠經過註釋這些save
來禁用保存。若是急需保存,能夠在執行完一條命令後直接使用save
或bgsave
來進行手動保存。save和bgsave的區別:save會阻塞其餘操做,直到保存完成,而bgsave能夠異步完成
性能
還有一些其餘配置:code
dbfilename dump.rdb
:備份文件的名稱,默認爲dump.rdb
cdn
stop-writes-on-bgsave-error
:表示當在進行數據傳輸時,保存到磁盤失敗了,Redis
會中止接受數據,這會讓用戶意識到該錯誤,默認爲Yes
,若是爲no
表示不在數據的一致性或有其餘是手段發現和控制。blog
rdbcompression
:是否對快照進行壓縮存儲,默認爲Yes
,若是是的話,redis
會採用LZF
算法進行壓縮,若是否的話,快照文件會比較大。進程
rdbchecksum
:在存儲快照後,是否進行數據校驗,默認爲Yes
,是的話會使用CRC64
算法來進行數據校驗,但會增長10%的性能消耗。
dir
:設置快照文件的路徑,默認和配置文件一塊兒
將備份文件移動到Redis
安裝目錄並啓動服務便可,能夠經過config get dir
獲取目錄
優點:適合大規模的數據恢復,對數據的完整性和一致性要求不高。
劣勢:Redis
意外斷線等的狀況下,會丟失最後一次快照的全部修改,由於存在子進程Fork
,內存須要作2倍計算。
1.真實狀況下備份數據不會和數據同處於個服務器。
2.重啓後會讀取dump.rdb
文件加載到內存中。
3.執行flushAll
也會產生dump.rdb
文件,不過該文件爲空,沒有意義!