AOF日志采用寫(xiě)后日志,即先寫(xiě)內(nèi)存,后寫(xiě)日志。
為什么采用寫(xiě)后日志?
Redis要求高性能,采用寫(xiě)日志有兩方面好處:
避免額外的檢查開(kāi)銷(xiāo):Redis 在向 AOF 里面記錄日志的時(shí)候,并不會(huì)先去對(duì)這些命令進(jìn)行語(yǔ)法檢查。所以,如果先記日志再執(zhí)行命令的話,日志中就有可能記錄了錯(cuò)誤的命令,Redis 在使用日志恢復(fù)數(shù)據(jù)時(shí),就可能會(huì)出錯(cuò)。
不會(huì)阻塞當(dāng)前的寫(xiě)操作
但這種方式存在潛在風(fēng)險(xiǎn):
如果命令執(zhí)行完成,寫(xiě)日志之前宕機(jī)了,會(huì)丟失數(shù)據(jù)。
主線程寫(xiě)磁盤(pán)壓力大,導(dǎo)致寫(xiě)盤(pán)慢,阻塞后續(xù)操作。