redis兩種持久化機制


  兩種持久化機制是RDB和AOF機制,下面介紹下是什么和優缺點。


 

  RDB持久化是指用數據集快照的方式記錄redis數據庫的所有鍵值對。

  兩個命令:SAVE命令會阻塞主進程來完成寫文件,BGSAVE命令會創建子進程來完成寫文件,主進程會繼續處理命令。

  優點:

  1.只有一個文件dump.rdb,方便持久化。

  2.容災性好,一個文件可以保存到安全的磁盤。

  3.性能最大化,fork子進程來完成寫操作,讓主進程繼續處理命令,所以是IO最大化。

  4.相對於數據集大時,比AOF的啟動效率更高。

  缺點:

  1.數據安全性低,通過配置save參數來達到定時的寫快照,比如 每900 秒有1個鍵被修改就進行一次快照,每600秒至少有10個鍵被修改進行快照,每30秒有至少10000個鍵被修改進行記錄。所以如果當服務器還在等待寫快照時出現了宕機,那么將會丟失數據。

  2.fork子進程時可能導致服務器停機1秒,數據集太大。


 

  AOF持久化是指所有的命令行記錄以redis命令請求協議的格式保存為aof文件。

  優點:

  1.數據安全,aof持久化可以配置appendfsync屬性,有always,每進行一次命令操作就記錄到aof文件中一次;everySec,就是每秒內進行一次文件的寫操作;no就是不進行aof文件的寫操作。

  2.通過append模式寫文件,即使中途服務器宕機,可以通過redis-check-aof工具解決數據一致性問題。

  3.AOF機制的rewrite模式,用來將過大的aof文件縮小,實現原理是將所有的set 通過一句set 命令總結,所有的SADD命令用總結為一句,這樣每種命令都概括為一句來執行,就可以減少aof文件的大小了。(注意,在重寫的過程中,是創建子進程來完成重寫操作,主進程每個命令都會在AOF緩沖區和AOF重寫緩沖區進行保存,這樣舊版aof文件可以實現數據最新,當更新完后將重寫緩沖區中的數據寫入新的aof文件中然后就可以將新的文件替換掉舊版的文件。

  缺點:

  1.文件會比RDB形式的文件大。

  2.數據集大的時候,比rdb啟動效率低。

 

當然本文是根據自己看書和參考其他博客中的內容總結而寫的(http://www.cnblogs.com/stephen-liu74/archive/2012/04/02/2365017.html)。

 


免責聲明!

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



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