1. 程式人生 > 實用技巧 >Redis從入門到深入-Redis持久化-RDB(13)

Redis從入門到深入-Redis持久化-RDB(13)

1. 持久化簡介
1.1 什麼是持久化

利用永久性儲存介質將資料進行儲存,在特定的時間將儲存的資料進行恢復的工作機制稱為持久化。

1.2 為什麼要進行持久化

防止資料的意外丟失,確保資料安全性

1.3 持久化過程儲存什麼
  • 將當前資料狀態進行儲存,快照形式,儲存資料結果,儲存格式簡單,關注點在資料
  • 將資料的操作過程進行儲存,日誌形式,儲存操作過程,儲存格式複雜,關注點在資料的操作過程

2. RDB-啟動save
2.1 誰,什麼時間,幹什麼事情
  • 誰:redis操作者(使用者)
  • 什麼時間:即時(隨時進行)
  • 幹什麼事情:儲存資料
2.2 Save指令
  • 命令 (save)
  • 作用(手動執行一次儲存操作)
2.3 save指令相關配置
  • db filename dump.rdb

    悅明:設定本地資料庫檔名, 預設值為dump.rdb
    經驗:通常設定為dump-埠號.rdb

  • dir

    說明:設定儲存.rdb檔案的路徑
    經驗:通常設定成儲存空間較大的目錄中, 目錄名稱data

  • rdb compression yes

    說明:設定儲存至本地資料庫時是否壓縮資料, 預設為yes, 採用LZF壓縮
    經驗:通常預設為開啟狀態, 如果設定為no, 可以節省CPU執行時間, 但會使儲存的檔案變大(巨大)

  • rdb checksum yes

    說明:設定是否進行RDB檔案格式校驗, 該校驗過程在寫檔案和讀檔案過程均進行
    經驗:通常預設為開啟狀態,如果設定為no,可以節約讀寫性過程約10%時間消耗,但是儲存一定的資料損壞風險

2.4 save指令工作原理

客戶端1:127.0.0.1:6379>setkey 1 value 1
客戶端2:127.0.0.1:6379>setkey 2 value 2
客戶端3:127.0.0.1:6379>save
客戶端4:127.0.0.1:6379>get key 1

注意:save指令的執行會阻塞當前Redis伺服器, 直到當前RDB過程完成為止, 有可能會造成長時間阻塞, 線上環境不建議使用。

3. RDB-啟動bgsave
3.1 誰,什麼時間,幹什麼事情
  • 誰:redis操作者(使用者) 發起指令; redis伺服器控制指令執行
  • 什麼時間:即時(發起);合理的時間(執行)
  • 幹什麼事情:儲存資料
3.2 bgsave指令
  • 命令
bgsave
  • 作用
    手動啟動後臺儲存操作,但不是立即執行
3.3 bgsave指令工作原理

注意:bgsave命令是針對save阻塞問題做的優化,Redis內部所有涉及到RDB操作都採用bgsave的方式,save命令可放棄使用

3.4 bgsave指令相關配置
  • dbfilename dump.rdb
  • dir
  • rdb compression yes
  • rdb checksum yes
  • stop-writes-on-bgsave-error yes
    說明:後臺儲存過程中如果出現錯誤現象,是否停止儲存操作
    經驗:通常預設為開啟狀態
4 RDB啟動-bgsave配置檔案

反覆執行儲存指令,忘記了怎麼辦?不知道資料產生了多少變化,何時儲存?

  1. 自動執行
  • 誰:redis伺服器發起指令(基於條件)
  • 什麼時間:滿足條件
  • 幹什麼事情:儲存資料
4.1 save配置
  • 配置
save <second> <changes>
  • 作用

    滿足限定時間範圍內key的變化數量達到指定數量即進行持久化

  • 引數

    second:監控時間範圍
    changes:監控key的變化量

  • 位置

    在conf檔案中進行配置

  • 範例

save 900 1
save 300 10
save 60 10000
4.2 save配置原理

注意:

  • save配置要根據實際業務情況進行設定,頻率過高過低都會出現效能問題,結果可能是災難級的
  • save配置中對於second與changes設定通常具有互補對應關係,儘量不要設定成包含性關係
  • save配置啟動後執行的是bgsave操作
5. RDB三種啟動方式對比

6. RDB特殊啟動形式
  • 全量複製
    在主從複製中詳細講解
  • 伺服器執行過程中重啟
debug <reload>
  • 關閉伺服器時指定儲存資料
shutdown <save>
7. RDB優缺點

RDB優點

  • RDB是一個緊湊壓縮的二進位制檔案, 儲存效率較高
  • RDB內部儲存的是redis在某個時間點的資料快照, 非常適合用於資料備份, 全量複製等場景
  • RDB恢復資料的速度要比A OF快很多
  • 應用:伺服器中每X小時執行bg save備份, 並將RDB檔案拷貝到遠端機器中, 用於災難恢復。

RDB缺點

  • RDB方式無論是執行指令還是利用配置, 無法做到實時持久化, 具有較大的可能性丟失資料
  • bgsave指令每次執行要執行fork操作建立子程序, 要犧牲掉一些效能
  • redis的眾多版本中未進行RDB檔案格式的版本統一,有可能出現各版本服務之間資料格式無法相容現象