Redis持久化之RDB

Redis是現現在比較火熱的一款緩存產品,相較於Memcache等其餘產品,它的優點在於豐富的數據類型,以及它的持久化。redis

正題算法

Redis 支持兩種數據持久化方案,一種是RDB(Redis DataBase)快照,還有一種是AOF(Append Only File),這裏給你們先介紹第一張RDB快照的方式:緩存

什麼是RDB?

RDBRedis提供的一種持久化方案,它能在指定的時間間隔內將內存中的數據集快照寫入磁盤。解析:Redis會單首創建一個子進程來進行持久化,會先將數據寫入到一個臨時文件,待持久化過程結束了,再用這個臨時文件替換上次持久化好的文件,而整個過程當中,主進程是不進行任何IO操做的。服務器

如何配置?

Redis配置文件redis.conf中找到以下節點能夠進行配置:異步

在上面的配置中,save定義了觸發自動持久化條件,官方註釋也說的很明確了,save senconds changes表示,在指定的時間內,進行了多少次操做就會進行保存到磁盤中,默認有三個定義,分別爲:900秒(15分鐘)內執行1次操做或者300秒(5分鐘)內執行10次操做,或者60秒內執行10000次操做。只要知足其中一個都會進行持久化,也能夠經過註釋這些save來禁用保存。若是急需保存,能夠在執行完一條命令後直接使用savebgsave來進行手動保存。save和bgsave的區別:save會阻塞其餘操做,直到保存完成,而bgsave能夠異步完成性能

還有一些其餘配置:code

dbfilename dump.rdb:備份文件的名稱,默認爲dump.rdbcdn

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文件,不過該文件爲空,沒有意義!

相關文章
相關標籤/搜索