RDB文件的創(chuàng)建與載入
有兩個命令可以用于生成RDB文件,一個是SAVE,另一個是BGSAVE。
SAVE命令會阻塞redis服務(wù)器進(jìn)程,直到RDB文件創(chuàng)建完畢為止。
BGSAVE會派生出一個子進(jìn)程,然后由子進(jìn)程負(fù)責(zé)創(chuàng)建RDB文件,服務(wù)器進(jìn)程繼續(xù)處理命令請求。
自動間隔性保存
用戶可以在指定配置文件或者傳入啟動參數(shù)的方式設(shè)置save選項,如果沒有主動設(shè)置,則默認(rèn)為:
save 900 1 -- 900秒內(nèi)對數(shù)據(jù)庫有一次改動。
save 300 10 -- 300秒內(nèi)對數(shù)據(jù)庫有10次改動。
save 60 10000 -- 60秒內(nèi)對數(shù)據(jù)有有10000次改動。
dirty計數(shù)器和lastsave屬性
dirty計數(shù)器記錄距離上一次成功執(zhí)行SAVE命令或者BGSAVE命令之后,服務(wù)器對數(shù)據(jù)庫狀態(tài)進(jìn)行了多次修改(寫入、刪除、更新等)
lastsave屬性是一個UNIX時間戳,記錄了服務(wù)器上一次成功執(zhí)行SAVE命令或者BGSAVE命令的時間。
總結(jié):
RDB文件用于保存和還原redis服務(wù)器所有數(shù)據(jù)庫中的所有鍵值對數(shù)據(jù)。
SAVE命令由服務(wù)器進(jìn)程直接執(zhí)行保存操作,所以該命令會阻塞服務(wù)器。
BGSAVE由子進(jìn)程執(zhí)行保存操作,所以該命令不會阻塞服務(wù)器。
服務(wù)器狀態(tài)中會保存所有用save選項設(shè)置的保存條件,當(dāng)任意一個保存條件被滿足時,服務(wù)器會自動執(zhí)行BGSAVE命令。
RDB文件是一個經(jīng)過壓縮的二進(jìn)制文件,由多個部分組成。
對于不同類型的鍵值對,RDB會使用不同的方式來保存它們。