1. 程式人生 > >Redis學習五:Redis的持久化-RDB

Redis學習五:Redis的持久化-RDB

RDB(Redis DataBase)

一、是什麼

1.概念:在指定的時間間隔內將記憶體中的資料集快照寫入磁碟,也就是行話講的Snapshot快照,它恢復時是將快照檔案直接讀到記憶體裡

2.執行方式:

Redis會單獨建立(fork)一個子程序來進行持久化,會先將資料寫入到一個臨時檔案中,待持久化過程都結束了,再用這個臨時檔案替換上次持久化好的檔案。整個過程中,主程序是不進行任何IO操作的,這就確保了極高的效能如果需要進行大規模資料的恢復,且對於資料恢復的完整性不是非常敏感,那RDB方式要比AOF方式更加的高效。RDB的缺點是最後一次持久化後的資料可能丟失。

二、Fork

Fork的作用是複製一個與當前程序一樣的程序。新程序的所有資料(變數、環境變數、程式計數器等)數值都和原程序一致,但是是一個全新的程序,並作為原程序的子程序

三、Rdb 儲存的是dump.rdb檔案

四、配置位置

五、如何觸發RDB快照【重點】

1.配置檔案中預設的快照配置

2.命令save或者是bgsave

Save:save時只管儲存,其它不管,全部阻塞

BGSAVE:Redis會在後臺非同步進行快照操作,快照同時還可以響應客戶端請求。可以通過lastsave命令獲取最後一次成功執行快照的時間

3.執行flushall命令,也會產生dump.rdb檔案,但裡面是空的,無意義

六、如何恢復

1.將備份檔案 (dump.rdb) 移動到 redis 安裝目錄並啟動服務即可

2.CONFIG GET dir獲取目錄

七、優勢

1.適合大規模的資料恢復

2.對資料完整性和一致性要求不高

八、劣勢

1.在一定間隔時間做一次備份,所以如果redis意外down掉的話,就會丟失最後一次快照後的所有修改

2.Fork的時候,記憶體中的資料被克隆了一份,大致2倍的膨脹性需要考慮

九、如何停止

動態所有停止RDB儲存規則的方法:redis-cli config set save ""

十、小總結