redis持久化方案比较
redis持久化包括rdb和aof兩種方案
1、rdb持久化方案
- 持久化過(guò)程:按照redis.conf文件配置,如
save 900 1
save 300 10
save 60 10000
,在指定時(shí)間間隔內(nèi)滿足數(shù)據(jù)落盤(pán)策略時(shí)候,redis會(huì)fork一個(gè)和原進(jìn)程一模一樣的子進(jìn)程,該進(jìn)程先將數(shù)據(jù)存到一個(gè)臨時(shí)文件里,待持久化結(jié)束后,用臨時(shí)文件替換上次的持久化文件。
- 觸發(fā)落盤(pán):滿足配置的策略、使用flushdb、使用flushall(效果是所用數(shù)據(jù)都刪除了,落盤(pán)后dump.rdb(默認(rèn)文件名,可配置)文件內(nèi)容為空)
- 恢復(fù)數(shù)據(jù):將dump.rdb復(fù)制到安裝redis目錄,并啟動(dòng)redis的服務(wù)。(連上redis后可以使用config get dir 獲取redis的安裝目錄)
劣勢(shì):
a、在一定間隔時(shí)間落盤(pán)一次,如果redis意外down,會(huì)吊事最后一次的redis中所有修改
b、fork的時(shí)候,內(nèi)存中的數(shù)據(jù)被克隆了一份,大致2倍的膨脹性需要考慮
優(yōu)勢(shì):適合對(duì)數(shù)據(jù)完整性和一致性要求不高的場(chǎng)景;適合大規(guī)模的數(shù)據(jù)恢復(fù)
2、aof持久化方案
- 持久化過(guò)程:按照redis.conf文件配置,如
#appendfsync always
appendfsync everysec
#appendfsync no
,根據(jù)同步策略為everysec,則每秒將寫(xiě)操作追加(讀操作不會(huì)追加)到appendonly.aof文件。
- 恢復(fù)數(shù)據(jù):將appendonly.aof文件復(fù)制到config get dir對(duì)應(yīng)的目錄,并重啟redis
- 重寫(xiě)機(jī)制:appendonly.aof的內(nèi)容是以追加的方式添加的,如果沒(méi)有特殊機(jī)制,該文件會(huì)越來(lái)越大,為避免這個(gè)情況,redis針對(duì)aof持久化方式有重寫(xiě)機(jī)制
重寫(xiě)過(guò)程:當(dāng)aof文件超過(guò)配置的閾值(滿足配置文件的配置的策略),redis會(huì)fork出一個(gè)進(jìn)程,該進(jìn)程遍歷內(nèi)存中的數(shù)據(jù),每條記錄都對(duì)應(yīng)一條set語(yǔ)句,寫(xiě)入臨時(shí)的aof文件,重寫(xiě)完成后,用臨時(shí)文件替換上次的持久化文件。
劣勢(shì):
a、aof文件遠(yuǎn)大于rdb文件
b、數(shù)據(jù)恢復(fù)速度慢于rdb
優(yōu)勢(shì):同步策略always->每次修改同步,性能差但完整性好;同步策略everysec->每秒同步,異步操作,如果一秒內(nèi)down機(jī)會(huì)丟失數(shù)據(jù);no->從不同步
3、疑問(wèn)
如果兩種持久化方式都配置了,那么redis重啟時(shí)候,從哪里恢復(fù)數(shù)據(jù)呢?
從appendonly.aof文件恢復(fù),因?yàn)閍of持久化的數(shù)據(jù)更精確
總結(jié)
以上是生活随笔為你收集整理的redis持久化方案比较的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 澳门关键字:葡萄牙、天主教、dc
- 下一篇: 数据去中心化的场景与流程