【redis專題(14)】持久化配置

概述

Redis的持久化有2種方式:快照rdb日誌aof
由於rdb是在某個時間點來備份的,直接備份二進制映像文件,恢復速度快。但是由於是在時間點備份的,在備份之前進程突然被殺掉就導致上個備份點到這個備份點之間的數據都丟失了;所以要結合Aof日誌來一起備份,再加上一個主從配置就比較完美了;

快照配置

save 900 1      #900秒內,有1條寫入,則產生快照 
save 300 1000   #如果300秒內有1000次寫入,則產生快照
save 60 10000   #如果60秒內有10000次寫入,則產生快照  
# 從下往上,一個梯形結構;
# 這3個選項都屏蔽,則rdb禁用;

stop-writes-on-bgsave-error yes #後臺備份進程出錯時,主進程停不停止寫入?不停止寫入的話,有可能數據一致性出現偏差 
rdbcompression yes               #導出的rdb文件是否壓縮
Rdbchecksum   yes                #導入rbd恢復時數據時,要不要檢驗rdb的完整性
dbfilename    dump.rdb           #導出來的rdb文件名
dir ./                           #rdb的放置路徑

Aof的配置

appendonly no  # 是否打開aof日誌功能
appendfsync everysec # 折中方案,每秒寫1次
appendfsync always   # 每1個命令,都立即同步到aof. 安全,速度慢
appendfsync no       # 寫入工作交給操作系統,由操作系統判斷緩衝區大小,統一寫入到aof. 同步頻率低,速度快;
no-appendfsync-on-rewrite  yes  # 正在導出rdb快照的過程中,要不要停止同步aof
auto-aof-rewrite-percentage 100 #aof文件大小比起上次重寫時的大小,增長率100%時,重寫
auto-aof-rewrite-min-size 64mb  #aof文件,至少超過64M時,重寫
重寫: redis內存裏的key-value逆化;比如set num 1,incr num 1....到100;把這一百個遞增的結果直接逆化成set num 100;而不是再搞一百個命令;

問題解答

問: 在dump rdb過程中,aof如果停止同步,會不會丟失?
答: 不會,所有的操作緩存在內存的隊列裏, dump完成後,統一操作.

問: aof重寫是指什麼?
答: aof重寫是指把內存中的數據,逆化成命令,寫入到.aof日誌裏.以解決aof日誌過大的問題.

問: 如果rdb文件,和aof文件都存在,優先用誰來恢復數據?
答: aof

問: 2種是否可以同時用?
答: 可以,而且推薦這麼做

問: 恢復時rdb和aof哪個恢復的快
答: rdb快,因爲其是數據的內存映射,直接載入到內存,而aof是命令,需要逐條執行redis 服務器端命令

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