RDB啓動方式
誰,什麼時間,幹什麼事情
命令執行
- 誰:redis操作者(用戶)
- 什麼時間:即時(隨時進行)
- 幹什麼事情:保存數據
RDB啓動方式---save指令
命令
save
作用:手動執行一次保存操作
RDB啓動方式---save指令相關配置
如下爲配置文件:
RDB啓動方式---save指令工作原理
RDB啓動方式---bgsave指令
數據量過大,單線程執行方式造成效率過低如何處理?
後臺執行
- 誰:redis操作者(用戶)發起指令:redis服務器控制指令執行
- 什麼時間:即時(發起);合理的時間(執行)
命令
bgsave
作用:手動啓動後臺保存操作,但不是立即執行
bgsave指令工作原理
注意:bgsave命令是針對save阻塞問題做的優化,redis內部所有涉及到rdb操作都採用bgsave的方式,save命令可以放棄使用
bgsave指令相關配製
dbfilename dump.rdb
dir
rdbcompression yes
rdbchecksum yes
stop-write-on-bgsave-error yes
說明:後天存儲過程中如果出現錯誤現象,是否停止保存操作
經驗:通常默認爲開啓狀態
rdb啓動方式---save配置
反覆執行保存指令,忘記了怎麼辦?不知道數據產生了多少變化,何時保存?
--自動執行
誰:redis服務器發起指令(基於條件)
什麼時間:滿足條件
幹什麼事情:保存數據
配置
save second changes
作用
滿足限定時間範圍內key的變化數量達到指定數量即進行持久化
參數
second:監控時間範圍
changes:監控key的變化量
位置
在conf文件中進行配置
範例
save 300 1
save 300 10
save 60 10000
Save配置原理
注意:
- save配置要根據實際業務情況設置,頻度過高或過低都會出現性能問題,結果可能是災難性的
- save配置中對於second與change設置通常具有互補對應關係,儘量不要設置成包含性關係
- save配置啓動後執行的是bgsave操作
Rdb三種啓動方式對比
Rdb特殊啓動形式
- 全量複製
在主從複製中詳細講解
- 服務器運行過程中重啓
debug reload
- 關閉服務器時指定保存數據
shutdown save
rdb優點
rdb是一個緊湊壓縮的二進制文件,存儲效率較高
rdb內部存儲的是redis在某個時間點的數據快照,非常適合用於數據備份,全量複製等場景
rdb恢復數據的速度要比aof快很多
應用:服務器中每X小時執行bgsave備份,並將rdb文件拷貝到遠程機器中,用於災難恢復
rdb缺點
rdb方式無論是執行指令還是利用配置,無法做到實時持久化,具有較大的可能性丟失數據
bgsave指令每次運行要執行fork操作創建子進程,要犧牲掉一些性能
redis的衆多版本中未進行rdb文件格式的版本統一,有可能出現各版本服務之間數據格式無法兼容現象