09_Redis持久化——AOF方式
【AOF簡(jiǎn)述】
AOF(Append-only)
Redis每次接受到一條改變數(shù)據(jù)的命令時(shí),它會(huì)把該命令寫(xiě)到一個(gè)AOF文件中(只記錄寫(xiě)操作,不記錄讀操作),當(dāng)Redis啟動(dòng)時(shí),它通過(guò)執(zhí)行AOF文件中的所有命令來(lái)恢復(fù)數(shù)據(jù)。
【AOF】
當(dāng)使用Redis存儲(chǔ)非臨時(shí)數(shù)據(jù)時(shí),一般需要打開(kāi)AOF持久化來(lái)降低進(jìn)程終止導(dǎo)致的數(shù)據(jù)丟失。
AOF可以將Redis執(zhí)行的每一條寫(xiě)命令追加到硬盤(pán)文件中,這一過(guò)程顯然會(huì)降低Redis的性能,但是大部分情況下這個(gè)影響是可以接收的,另外使用較快的硬盤(pán)可以提高AOF的性能。
?【配置AOF】
?
【開(kāi)啟AOF】
默認(rèn)情況下Redis是咩有開(kāi)啟AOF(append only file)方式的持久化,可以通過(guò)appendonly參數(shù)啟動(dòng):
appendonly yes
開(kāi)啟AOF持久化后每執(zhí)行一條寫(xiě)命令,Redis就會(huì)將該命令寫(xiě)入硬盤(pán)中的AOF文件。
AOF文件的保存位置和RDB文件的位置相同,都是通過(guò)dir參數(shù)設(shè)置的,默認(rèn)的文件名是appendonly.aof,可以通過(guò)appendfilename參數(shù)修改。
?
【總結(jié)】
?
【總結(jié)——aof優(yōu)點(diǎn)】
1.比RDB可靠。你可以制定不同的fsync策略:不進(jìn)行fsync、每秒fsync一次和每次查詢進(jìn)行fsync。默認(rèn)是每秒fsync一次。這意味著你最多丟失一秒鐘的數(shù)據(jù)。 2.AOF日志文件是一個(gè)純追加的文件。就算是遇到突然停電的情況,也不會(huì)出現(xiàn)日志的定位或者損壞問(wèn)題。
甚至如果因?yàn)槟承┰?#xff08;例如磁盤(pán)滿了)命令只寫(xiě)了一半到日志文件里,我們也可以用redis-check-aof這個(gè)工具很簡(jiǎn)單的進(jìn)行修復(fù)。 3.當(dāng)AOF文件太大時(shí),Redis會(huì)自動(dòng)在后臺(tái)進(jìn)行重寫(xiě)。重寫(xiě)很安全,
因?yàn)橹貙?xiě)是在一個(gè)新的文件上進(jìn)行,同時(shí)Redis會(huì)繼續(xù)往舊的文件追加數(shù)據(jù)。新文件上會(huì)寫(xiě)入能重建當(dāng)前數(shù)據(jù)集的最小操作命令的集合。
當(dāng)新文件重寫(xiě)完,Redis會(huì)把新舊文件進(jìn)行切換,然后開(kāi)始把數(shù)據(jù)寫(xiě)到新文件上。 4.AOF把操作命令以簡(jiǎn)單易懂的格式一條接一條的保存在文件里,很容易導(dǎo)出來(lái)用于恢復(fù)數(shù)據(jù)。
例如我們不小心用FLUSHALL命令把所有數(shù)據(jù)刷掉了,只要文件沒(méi)有被重寫(xiě),我們可以把服務(wù)停掉,把最后那條命令刪掉,
然后重啟服務(wù),這樣就能把被刷掉的數(shù)據(jù)恢復(fù)回來(lái)。
【總結(jié)——aof缺點(diǎn)】
1.在相同的數(shù)據(jù)集下,AOF文件的大小一般會(huì)比RDB文件大。 2.在某些fsync策略下,AOF的速度會(huì)比RDB慢。通常fsync設(shè)置為每秒一次就能獲得比較高的性能,而在禁止fsync的情況下速度可以達(dá)到RDB的水平。 3.在過(guò)去曾經(jīng)發(fā)現(xiàn)一些很罕見(jiàn)的BUG導(dǎo)致使用AOF重建的數(shù)據(jù)跟原數(shù)據(jù)不一致的問(wèn)題。
?
轉(zhuǎn)載于:https://www.cnblogs.com/HigginCui/p/8672389.html
總結(jié)
以上是生活随笔為你收集整理的09_Redis持久化——AOF方式的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 浅谈数据分析中的“暗物质”
- 下一篇: MySQL - 日常操作二 备份还原