Redis持久化——RDB
阿新 • • 發佈:2022-03-22
Redis持久化——RDB
背景
為什麼需要持久化?
Redis是記憶體資料庫,記憶體中的資料會斷電即失,因此需要做持久化避免裡面的資料在突然斷電的情況丟失。
持久化方式都有哪些?
- RDB(Redis DataBase) :將某一時刻的記憶體快照(snapshot),以二進位制方式寫入磁碟中.rdb檔案的過程。本文重點講解
- AOF(Append Only File) :以日誌的形式記錄伺服器鎖處理的每一個寫、刪除操作,查詢操作不會記錄,以文字的方式記錄,可以開啟檔案看到詳細的操作記錄
- RDB和AOF混合儲存
持久化流程
- Redis會單獨建立一個子程序來進行持久化
- 子程序會將記憶體寫入一個臨時的RDB檔案
- 等持久化過程結束後,用剛寫好的臨時檔案替換原來的檔案
- 若持久化同時有新的寫請求,則複製記憶體頁面的副本,在作業系統os寫的時候,使用複製機制
觸發及載入
觸發條件
- 達到配置檔案中設定的觸發條件
save 900 1 # 900s 即15分鐘內寫key 1次
save 300 10 # 900s 即5分鐘內寫key 10次
save 60 10000 # 900s 即1分鐘內寫key 10000次
-
flushall
清空所有資料庫 -
shutdown
退出資料庫 -
使用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持久化適用於大型資料持久,且對資料完整性要求不高的場景,是一種常用的資料持久化方式。