1.是什么
以日志的形式來(lái)記錄每個(gè)寫(xiě)操作(增量保存),將redis執(zhí)行過(guò)的所有寫(xiě)指令記錄下來(lái)(讀操作不記錄),只許追加文件但不可以改寫(xiě)文件,redis啟動(dòng)之初會(huì)讀取該文件重新構(gòu)建數(shù)據(jù),換言之,redis重啟的話(huà)就根據(jù)日志文件的內(nèi)容將寫(xiě)指令從前到后執(zhí)行一次以完成數(shù)據(jù)的恢復(fù)工作。
2.AOF持久化流程

(1)客戶(hù)端發(fā)送請(qǐng)求(寫(xiě)命令)會(huì)被append追加到AOF緩沖區(qū)內(nèi);
(2)AOF緩沖區(qū)根據(jù)AOF持久化策略[always,everysec,no]將操作sync同步到磁盤(pán)的aof文件中;
(3)aof文件大小超過(guò)重寫(xiě)策略或手動(dòng)重寫(xiě)時(shí),進(jìn)程rewrite重寫(xiě),壓縮aof文件容量;
(4)Redis服務(wù)重啟時(shí),會(huì)重新load加載aof文件中的寫(xiě)操作達(dá)到數(shù)據(jù)恢復(fù)的目的;
3.AOF默認(rèn)不開(kāi)啟
可以在redis.config中配置文件名稱(chēng),默認(rèn)為appendonly.aof
AOF文件的保存路徑,同RDB的路徑一致
4.AOF和RDB同時(shí)開(kāi)啟,redis聽(tīng)誰(shuí)的?
AOF和RDB同時(shí)開(kāi)啟,系統(tǒng)默認(rèn)取AOF的數(shù)據(jù)(數(shù)據(jù)不會(huì)存在丟失)
5.AOF啟動(dòng)/恢復(fù)/修復(fù)
AOF的備份機(jī)制和性能雖然和RDB不同, 但是備份和恢復(fù)的操作同RDB一樣,都是拷貝備份文件,需要恢復(fù)時(shí)再拷貝到Redis工作目錄下
(1)正?;謴?fù):
修改默認(rèn)的appendonly no,改為yes
??將有數(shù)據(jù)的aof文件復(fù)制一份保存到對(duì)應(yīng)目錄(查看目錄:config get dir)

恢復(fù):重啟redis然后重新加載
(2)異?;謴?fù):
- 修改默認(rèn)的appendonly no,改為 yes
- 如遇到AOF文件損壞,通過(guò)
進(jìn)行恢復(fù)
- 備份被寫(xiě)壞的AOF文件
- 恢復(fù):重啟redis,然后重新加載
6.AOF同步頻率設(shè)置
appendfsync always:始終同步,每次Redis的寫(xiě)入都會(huì)立刻記入日志;性能較差但數(shù)據(jù)完整性比較好
appendfsync everysec:每秒同步,每秒記入日志一次,如果宕機(jī),本秒的數(shù)據(jù)可能丟失。
appendfsync no:redis不主動(dòng)進(jìn)行同步,把同步時(shí)機(jī)交給操作系統(tǒng)。
————————————————
版權(quán)聲明:本文為CSDN博主「但行益事莫問(wèn)前程」的原創(chuàng)文章,遵循CC 4.0 BY-SA版權(quán)協(xié)議,轉(zhuǎn)載請(qǐng)附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/javahelpyou/article/details/124056799