1. 什麼是RDB?
RDB:每隔一段時間,把內存中的數據寫入磁盤的臨時文件,作爲快照,恢復的時候把快照文件讀進內存。如果宕機重啓,那麼內存裏的數據肯定會沒有的,重啓Redis後,則會恢復。是一個全量的備份模式。
簡單說,就是Redis定期備份內存數據,系統重啓後,再從備份數據讀取到內存中。
2. RDB的優劣勢?
-
優勢
- 每隔一段時間備份,全量備份
- 災備簡單,可以遠程傳輸
- 子進程備份的時候,主進程不會有任何IO操作,保證備份數據的完整性
- 相對AOF來說,當有更大文件的時候可以快速重啓恢復
-
劣勢
- 發生故障時,有可能會丟失最後一次的備份數據
- 子進程所佔用的內存和父進程一樣,造成資源緊張
- 由於定時全量備份是重量級操作,所以對於實時備份,就無法處理了
3. RDB的配置
-
保存位置,可以在redis.conf自定義:
dbfilename dump.rdb dir /usr/local/redis/db
-
保存機制
save 900 1 # 如果一個緩存更新,則15分鐘後備份 save 300 10 # 如果10個緩存更新,則5分鐘後備份 save 60 10000 # 如果10000個緩存更新,則1分鐘後備份 save 10 3 # 如果更新3個緩存更新,則10秒後備份
-
stop-writes-on-bgsave-error
- yes: 如果save過程出錯,則停止寫操作
- no:可能造成數據不一致
-
rdbcompression
- yes:開啓rdb壓縮模式
- no:關閉,會節約CPU損耗,但是文件會大,和nginx一個道理
-
rdbchecksum
- yes: 針對rdb進行數據校驗,會有10%的性能開銷
- no:關閉,節約CPU資源