Redis基礎篇(五)AOF與RDB比較和選擇策略


RDB和AOF對比

關於RDB和AOF的優缺點,官網上面也給了比較詳細的說明redis.io/topics/pers…

RDB

優點:

  • RDB快照是一個壓縮過的非常緊湊的文件,保存着某個時間點的數據集,適合做數據的備份,災難恢復;
  • 可以最大化Redis的的性能,在保存RDB文件,服務器進程只需要fork一個子進程來完成RDB文件的創建,父進程不需要做IO操作;
  • 與AOF相比,恢復大數據集的時候會更快;

缺點:

  • RDB的數據安全性是不如AOF的,保存整個數據集的過程是比繁重的,根據配置可能要幾分鍾才快照一次,如果服務器宕機,那么就可能丟失幾分鍾的數據;
  • Redis數據集較大時,fork的子進程要完成快照會比較耗CPU、耗時;

AOF

優點:

  • 數據更完整,安全性更高,秒級數據丟失(取決fsync策略,如果是everysec,最多丟失1秒的數據);
  • AOF文件是一個只進行追加的日志文件,且寫入操作是以Redis協議的格式保存的,內容是可讀的,適合誤刪緊急恢復;

缺點:

  • 對於相同的數據集,AOF文件的體積要大於RDB文件,數據恢復也會比較慢;
  • 根據所使用的fsync策略,AOF的速度可能會慢於RDB。 不過在一般情況下,每秒fsync的性能依然非常高;

RDB和AOF如何選擇

通常來說,應該同時使用兩種持久化方案,以保證數據安全。

  • 如果數據不敏感,且可以從其他地方重新生成,可以關閉持久化。
  • 如果數據比較重要,且能夠承受幾分鍾的數據丟失,比如緩存等,只需要使用RDB即可。
  • 如果是用做內存數據,要使用Redis的持久化,建議是RDB和AOF都開啟。
  • 如果只用AOF,優先使用everysec的配置選擇,因為它在可靠性和性能之間取了一個平衡。

當RDB與AOF兩種方式都開啟時,Redis會優先使用AOF恢復數據,因為AOF保存的文件比RDB文件更完整。

參考資料


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM