redis高級之持久化(二)---RDB方式

RDB啓動方式

誰,什麼時間,幹什麼事情

命令執行

  1. 誰:redis操作者(用戶)
  2. 什麼時間:即時(隨時進行)
  3. 幹什麼事情:保存數據

RDB啓動方式---save指令

命令

save

作用:手動執行一次保存操作

RDB啓動方式---save指令相關配置

如下爲配置文件:

RDB啓動方式---save指令工作原理

RDB啓動方式---bgsave指令

數據量過大,單線程執行方式造成效率過低如何處理?

後臺執行

  1. 誰:redis操作者(用戶)發起指令:redis服務器控制指令執行
  2. 什麼時間:即時(發起);合理的時間(執行)

命令

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文件格式的版本統一,有可能出現各版本服務之間數據格式無法兼容現象

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章