聽AOF的,RDB與AOF同時(shí)開啟 默認(rèn)無(wú)腦加載AOF的配置文件
相同數(shù)據(jù)集芍躏,AOF文件要遠(yuǎn)大于RDB文件邪乍,恢復(fù)速度慢于RDB
AOF運(yùn)行效率慢于RDB,但是同步策略效率好,不同步效率和RDB相同
1对竣、Rewrite 重寫
AOF采用文件追加方式庇楞,文件會(huì)越來(lái)越大為避免出現(xiàn)此種情況,新增了重寫機(jī)制,當(dāng)AOF文件的大小超過所設(shè)定的閾值時(shí)否纬,Redis就會(huì)啟動(dòng)AOF文件的內(nèi)容壓縮吕晌,只保留可以恢復(fù)數(shù)據(jù)的最小指令集.可以使用命令bgrewriteaof
[root@hadoop102 myredis]# redis-server redis.conf
[root@hadoop102 myredis]# redis-cli
//不能經(jīng)常去做,需要達(dá)到一定的量級(jí)
127.0.0.1:6379> bgrewriteaof
set k1 1000
incrby k1 100
incrby k1 100
incrby k1 100
incrby k1 100
↓
set k1 1400
2临燃、Redis如何實(shí)現(xiàn)重寫睛驳?
AOF文件持續(xù)增長(zhǎng)而過大時(shí),會(huì)fork出一條新進(jìn)程來(lái)將文件重寫(也是先寫臨時(shí)文件最后再rename)谬俄,遍歷新進(jìn)程的內(nèi)存中數(shù)據(jù)柏靶,每條記錄有一條的Set語(yǔ)句。重寫aof文件的操作溃论,并沒有讀取舊的aof文件屎蜓,而是將整個(gè)內(nèi)存中的數(shù)據(jù)庫(kù)內(nèi)容用命令的方式重寫了一個(gè)新的aof文件,這點(diǎn)和快照有點(diǎn)類似钥勋。
3炬转、何時(shí)重寫
重寫雖然可以節(jié)約大量磁盤空間辆苔,減少恢復(fù)時(shí)間。但是每次重寫還是有一定的負(fù)擔(dān)的扼劈,因此設(shè)定Redis要滿足一定條件才會(huì)進(jìn)行重寫驻啤。
系統(tǒng)載入時(shí)或者上次重寫完畢時(shí),Redis會(huì)記錄此時(shí)AOF大小荐吵,設(shè)為base_size,如果Redis的AOF當(dāng)前大小>= base_size +base_size*100% (默認(rèn))且當(dāng)前大小>=64mb(默認(rèn))的情況下骑冗,Redis會(huì)對(duì)AOF進(jìn)行重寫。
4先煎、AOF的優(yōu)點(diǎn)
備份機(jī)制更穩(wěn)健贼涩,丟失數(shù)據(jù)概率更低。
可讀的日志文本薯蝎,通過操作AOF穩(wěn)健遥倦,可以處理誤操作。
5占锯、AOF的缺點(diǎn)
比起RDB占用更多的磁盤空間袒哥。
恢復(fù)備份速度要慢。
每次讀寫都同步的話消略,有一定的性能壓力堡称。
存在個(gè)別Bug,造成不能恢復(fù)