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

大雜草發表於2020-12-30

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檔案更完整。

參考資料

相關文章