Redis持久化
簡介
Redis 提供了兩種不同形式的持久化方式再菊。
RDB(Redis DataBase)
AOF(Append of File)
RDB
在指定的時間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤焚志,也就是 Snapshot 快照彼妻,它恢復(fù)時是將快照文件直接讀到內(nèi)存里爹殊。
Redis 會單獨(dú)創(chuàng)建一個(fork)一個子進(jìn)程來進(jìn)行持久化,會先將數(shù)據(jù)寫入到一個臨時文件中,待持久化過程都結(jié)束了狡耻,再用這個臨時文件替換上一次持久化好的文件。整個過程中猴凹,主進(jìn)程是不進(jìn)行任何 IO 操作的夷狰,這就確保了極高的性能如果需要進(jìn)行大規(guī)模的數(shù)據(jù)的恢復(fù),且對于數(shù)據(jù)恢復(fù)的完整性不是很敏感精堕,那 RDB 方式要比 AOF 方式更加的高效孵淘。RDB 的缺點(diǎn)是最后一次持久化后的數(shù)據(jù)可能丟失蒲障。
RDB 的優(yōu)點(diǎn)
節(jié)省磁盤空間
恢復(fù)速度快
RDB 的缺點(diǎn)
雖然 Redis 在 fork 時使用了寫時拷貝技術(shù)歹篓,但是如果數(shù)據(jù)龐大時還是比較消耗性能的。
在備份周期在一定間隔時間就要做一次備份揉阎,所以如果 Redis 意外 down 掉的話庄撮,就會丟失最后一次快照后的所有修改。
AOF
以日志的形式來記錄每一個寫操作毙籽,將 Redis 執(zhí)行過的所有寫指令記錄下來(讀操作不記錄)洞斯,只許追加文件但不可以修改寫文件,Redis 啟動之初只會讀取該文件重新構(gòu)建數(shù)據(jù)坑赡,換言之烙如,Redis重啟的話根據(jù)日志文件的內(nèi)容將寫指令從前到后執(zhí)行一次以完成數(shù)據(jù)的恢復(fù)工作。
AOF的優(yōu)點(diǎn)
備份機(jī)制更穩(wěn)健毅否,丟失數(shù)據(jù)概率更低亚铁。
可讀的日志文本,通過操作 AOF 文件螟加,可以處理誤操作徘溢。
AOF的缺點(diǎn)
比起 RDB 占用更多的磁盤空間吞琐。
恢復(fù)備份速度要慢。
每次讀寫都同步的話然爆,有一定的性能壓力站粟。
存在個別 BUG,造成恢復(fù)不可能曾雕。