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 ""
十、小總結