1. 程式人生 > 其它 >Redis持久化——RDB

Redis持久化——RDB

Redis持久化——RDB

背景

為什麼需要持久化?

Redis是記憶體資料庫,記憶體中的資料會斷電即失,因此需要做持久化避免裡面的資料在突然斷電的情況丟失。

持久化方式都有哪些?

  1. RDB(Redis DataBase) :將某一時刻的記憶體快照(snapshot),以二進位制方式寫入磁碟中.rdb檔案的過程。本文重點講解
  2. AOF(Append Only File) :以日誌的形式記錄伺服器鎖處理的每一個寫、刪除操作,查詢操作不會記錄,以文字的方式記錄,可以開啟檔案看到詳細的操作記錄
  3. RDB和AOF混合儲存

持久化流程

  1. Redis會單獨建立一個子程序來進行持久化
  2. 子程序會將記憶體寫入一個臨時的RDB檔案
  3. 等持久化過程結束後,用剛寫好的臨時檔案替換原來的檔案
  4. 若持久化同時有新的寫請求,則複製記憶體頁面的副本,在作業系統os寫的時候,使用複製機制

觸發及載入

觸發條件

  1. 達到配置檔案中設定的觸發條件
save 900 1 # 900s 即15分鐘內寫key 1次
save 300 10 # 900s 即5分鐘內寫key 10次
save 60 10000 # 900s 即1分鐘內寫key 10000次
  1. flushall清空所有資料庫

  2. shutdown退出資料庫

  3. 使用save或bgsave

    save會導致redis同步阻塞,基本被廢棄

    bgsave,後臺執行快照操作,同時可以響應客戶端請求,但是當記憶體不夠時,將使用虛擬記憶體,導致redis阻塞

載入

只要將rdb檔案放在下面目錄下,在redis啟動的時候就會載入

127.0.0.1:6379> config get dir
1) "dir"
2) "D:\\install\\Redis-x64-5.0.10" # rdb檔案所在的目錄

優缺點對比

優點:

大型資料的持久化效率高,子執行緒操作的

適用於資料完整性要求不高的場景

缺點:

最後一次儲存後的操作會丟失

總結

RDB持久化適用於大型資料持久,且對資料完整性要求不高的場景,是一種常用的資料持久化方式。