1. 程式人生 > >redis兩種持久化機制

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啟動效率低。

    部落格是自己理解 然後看博主寫的不錯轉載的(https://www.cnblogs.com/bamaofan/p/5284014.html)