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