缓存使用-4、Redis 持久化机制
一、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/chenxiaoxian/p/10426939.html
總結
以上是生活随笔為你收集整理的缓存使用-4、Redis 持久化机制的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 数据分析工具之 numpy
- 下一篇: JDBC连接数据库及其执行操作