《Redis設計與實現》第十章 RDB持久化

Redis是內存數據庫,它將自己的數據庫狀態存儲在內存裏面,所以要提供RDB持久化功能來避免數據以爲丟失。

-w612

10.1 RDB文件的創建與載入

有兩個Redis命令可以用於生成RDB文件,一個是SAVE另外一個是BGSAVE,Save會阻塞進程,bgssave不會。
-w721
-w689

10.1.1 SAVE命令執行時的服務器狀態

只有在服務器執行完SAVE命令、重新開始接受命令請求之後,客戶端發送的命令愛會被處理。

10.1.2 BGSAVE命令執行時的服務器狀態

-w704
子進程來進行持久化,與許多命令不兼容。

10.1.3 RDB文件載入時的服務器狀態

載入RDB時會一直阻塞狀態。

10.2 自動間隔性保存

-w554

10.2.1 設置保存條件

save 900 1
save 300 10
save 60 100000

-w552

10.2.2 diryty計數器和lastsave屬性

dirty計數器記錄了距離上一次成功執行save命令或者bgsave命令之後,服務器對數據庫狀態進行了多少次修改(寫入、刪除、更新等操作)。
lastSave屬性是一個unix時間戳記錄上次成功執行RDB持久化的時間。

-w292
-w711

10.2.3 檢查保存條件是否滿足

-w728

10.3 RBD文件結構

-w473
常量用大寫、變量和數據用小寫。

-w712

10.3.1 databases部分

一個RDB文件的databases部分可以保存任意多個非空數據庫。

-w715
-w276

10.3.2 key_value_pairs部分

-w709
-w537
-w708

10.3.3 value編碼

RDB文件中的每個value部分都保存了一個值對象。

1、字符串對象 2、列表對象-w403
3、集合對象
-w728
4、哈希對象
-w724

10.4 分析RDB文件

10.4.1 不包含任何鍵值對的rdb文件

-w741

10.4.2 包含字符串鍵的RDB文件

-w600

10.4.3 包含過期時間的字符串鍵的RDB文件

-w599
…各種二進制分析

10.5 重點回顧

  • RDB文件用於保存和還原Redis服務器的所有數據庫中的所有鍵值對數據
  • save命令阻塞操作保存
  • bgsave用紫禁城執行保存操作
  • rdb是一個經過壓縮的二進制文件,由多個部分組成
  • 不同類型的鍵值對,rdb文件使用不同的方式保存他們。

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