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