RDB持久化 |
AOF持久化 |
全量備份,一次保存整個數據庫 |
增量備份,一次保存一個修改數據庫的命令 |
保存的間隔較長 |
保存的間隔默認一秒 |
數據還原速度快 |
數據還原速度一般 |
save會阻塞,但bgsave或者自動不會阻塞 |
無論是平時還是AOF重寫,都不會阻塞 |
更適合數據備份,默認開啟 |
更適合用來保存數據,和一般SQL持久化方式一樣,默認關閉 |
啟動優先級 : 低 |
啟動優先級 : 高 |
體積 : 小 |
體積 : 大 |
恢復速度 : 快 |
恢復速度 : 慢 |
數據安全性 : 丟數據 |
數據安全性 : 根據策略決定 |
輕重 : 重 |
輕重: 輕 |
1.在dump rdb過程中,aof如果停止同步,會不會丟失?
不會,所有的操作緩存在內存隊列里,dump完后后,統一操作
2.aof重寫是什么?
aof重寫就是把內存中的數據逆化成命令,寫入到aof文件,以解決aof日志過大的問題
3.如果rdb和aof文件都存在,優先使用誰恢復數據?
在這種情況下,當redis重啟的時候會優先載入AOF文件來恢復原始的數據,因為在通常情況下AOF文件保存的數據集要比RDB文件完整
4.rdb和aof是否可以同時用?
可以,推薦同時使用
5.恢復時,rdb和aof哪個更快?
rdb快,因為rdb是數據的內存映射,直接載入到內存,而aof是命令,需要逐條執行
6.如何在不用【config set】命令的情況下,將Redis持久化由RDB切換到AOF
利用主從,從機配置AOF重啟后,將生成的AOF文件復制至主機Redis數據目錄,主機配置AOF后再重啟。
注:在 Redis 2.2 或以上版本,通過【config set】可以在不重啟的情況下,從 RDB 切換到 AOF。
1)為最新的 dump.rdb 文件創建一個備份。
2)將備份放到一個安全的地方。
3)執行以下兩條命令: redis-cli> CONFIG SET appendonly yes redis-cli> CONFIG SET save ""
4)確保命令執行之后,數據庫的鍵的數量沒有改變。
5)確保寫命令會被正確地追加到 AOF 文件的末尾。
步驟 3 執行的第一條命令開啟了AOF功能:<font style="color:red">Redis會阻塞直到初始AOF文件創建完成為止</font>,之后Redis會繼續處理命令請求, 並開始將寫入命令追加到 AOF 文件末尾。
步驟 3 執行的第二條命令用於關閉RDB功能。這一步是可選的,如果你願意的話,也可以同時使用RDB和AOF這兩種持久化功能。
不過別忘了在redis.conf中打開AOF功能!否則的話,服務器重啟之后,之前通過【CONFIG SET】設置的配置就會被遺忘,程序會按原來的配置來啟動服務器。