缓存使用-4、Redis 持久化机制
一、redis啟動(dòng)時(shí)載入持久化文件的流程。
?
?
?
二、redis兩種持久化機(jī)制
?
? 兩種持久化機(jī)制是RDB和AOF機(jī)制,下面介紹下是什么和優(yōu)缺點(diǎn)。
?
? RDB持久化是指用數(shù)據(jù)集快照的方式記錄redis數(shù)據(jù)庫(kù)的所有鍵值對(duì)。
? 兩個(gè)命令:SAVE命令會(huì)阻塞主進(jìn)程來(lái)完成寫文件,BGSAVE命令會(huì)創(chuàng)建子進(jìn)程來(lái)完成寫文件,主進(jìn)程會(huì)繼續(xù)處理命令。
? 優(yōu)點(diǎn):
1.只有一個(gè)文件dump.rdb,方便持久化。
2.容災(zāi)性好,一個(gè)文件可以保存到安全的磁盤。
3.性能最大化,fork子進(jìn)程來(lái)完成寫操作,讓主進(jìn)程繼續(xù)處理命令,所以是IO最大化。
4.相對(duì)于數(shù)據(jù)集大時(shí),比AOF的啟動(dòng)效率更高。
? 缺點(diǎn):
1.數(shù)據(jù)安全性低,通過配置save參數(shù)來(lái)達(dá)到定時(shí)的寫快照,比如 每900 秒有1個(gè)鍵被修改就進(jìn)行一次快照,每600秒至少有10個(gè)鍵被修改進(jìn)行快照,每30秒有至少10000個(gè)鍵被修改進(jìn)行記錄。所以如果當(dāng)服務(wù)器還在等待寫快照時(shí)出現(xiàn)了宕機(jī),那么將會(huì)丟失數(shù)據(jù)。
2.fork子進(jìn)程時(shí)可能導(dǎo)致服務(wù)器停機(jī)1秒,數(shù)據(jù)集太大。
?
? AOF持久化是指所有的命令行記錄以redis命令請(qǐng)求協(xié)議的格式保存為aof文件。
? 優(yōu)點(diǎn):
1.數(shù)據(jù)安全,aof持久化可以配置appendfsync屬性,有always,每進(jìn)行一次命令操作就記錄到aof文件中一次;everySec,就是每秒內(nèi)進(jìn)行一次文件的寫操作;no就是不進(jìn)行aof文件的寫操作。
2.通過append模式寫文件,即使中途服務(wù)器宕機(jī),可以通過redis-check-aof工具解決數(shù)據(jù)一致性問題。
3.AOF機(jī)制的rewrite模式,用來(lái)將過大的aof文件縮小,實(shí)現(xiàn)原理是將所有的set 通過一句set 命令總結(jié),所有的SADD命令用總結(jié)為一句,這樣每種命令都概括為一句來(lái)執(zhí)行,就可以減少aof文件的大小了。(注意,在重寫的過程中,是創(chuàng)建子進(jìn)程來(lái)完成重寫操作,主進(jìn)程每個(gè)命令都會(huì)在AOF緩沖區(qū)和AOF重寫緩沖區(qū)進(jìn)行保存,這樣舊版aof文件可以實(shí)現(xiàn)數(shù)據(jù)最新,當(dāng)更新完后將重寫緩沖區(qū)中的數(shù)據(jù)寫入新的aof文件中然后就可以將新的文件替換掉舊版的文件。
? 缺點(diǎn):
1.文件會(huì)比RDB形式的文件大。
2.數(shù)據(jù)集大的時(shí)候,比rdb啟動(dòng)效率低。
?
轉(zhuǎn)載于:https://www.cnblogs.com/chenxiaoxian/p/10426939.html
總結(jié)
以上是生活随笔為你收集整理的缓存使用-4、Redis 持久化机制的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python 数据分析工具之 numpy
- 下一篇: Bug in Code CodeForc