真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

aof日志文件的用處有哪些-創(chuàng)新互聯(lián)

今天就跟大家聊聊有關(guān)aof日志文件的用處有哪些,可能很多人都不太了解,為了讓大家更加了解,小編給大家總結(jié)了以下內(nèi)容,希望大家根據(jù)這篇文章可以有所收獲。

滁州ssl適用于網(wǎng)站、小程序/APP、API接口等需要進(jìn)行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)建站的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18980820575(備注:SSL證書合作)期待與您的合作!

在Redis配置文件中有一個叫appendonly的選項,可以寫yes或no.這個選項就是負(fù)責(zé)是否開啟AOF日志的開關(guān).AOF日志,你可以簡單理解為MySQL binlog一樣的東西,作用就是記錄每次的寫操作,在遇到斷電等問題時可以用它來恢復(fù)數(shù)據(jù)庫狀態(tài).但是他不是bin的,而是text的.一行一行,寫得很規(guī)范.如果你是一臺redis,那你也能人肉通過它恢復(fù)數(shù)據(jù)。下面創(chuàng)新互聯(lián)網(wǎng)站建設(shè)公司,小編來講解下aof(append only file)日志文件有哪些用處?
aof(append only file)日志文件有哪些用處

Redis有三種類型的落地文件:

數(shù)據(jù)文件-在配置中可設(shè)置其位置及文件名,默認(rèn)文件名dump.rdb

日志文件-在配置中也可以配置.當(dāng)然,在你是以daemon方式運行的時候,這個值就不要設(shè)置為stdout了,這么設(shè)置會自動被換成/dev/null

AOF文件-也就是我們這篇文章的主角,他的作用是用于數(shù)據(jù)恢復(fù).他除了設(shè)置是否開啟外,還可以設(shè)置開啟后以何種方式寫日志.這個何種一共是三種,1是每次寫操作都保證將fsync()來完成的,2是每秒調(diào)用一次fsync(),3是從不調(diào)用,讓操作系統(tǒng)自己來同步.當(dāng)然,設(shè)置為不同,效率會不同,你的數(shù)據(jù)損失風(fēng)險也不同.

運行流程

既然是log文件,而且是要用于恢復(fù)的,那么我們動動腳趾都能想到,這玩意肯定會越來越大,不管你的應(yīng)用是大是小,如果AOF文件只增不減的話,那文件將會無限長大,這個問題是所有binlog都會遇到的.而通常遇到這種問題都會有一個rotate方案.就是當(dāng)日志達(dá)到一定大小或者每隔一段時間將日志寫到新的一個文件中,舊日志文件可以用來備份或其它.

而Redis的AOF還和rotate略有不同,他用了一種比較簡單的方法,就是先給當(dāng)前的所有數(shù)據(jù)做一個快照.然后再在這個快照的基礎(chǔ)上寫接下來的日志.

照快照的好處是,你之前可能用了10w次操作共改變了100條數(shù)據(jù)(比如在一條數(shù)據(jù)上進(jìn)行了多次操作).那這時你AOF中的10w條寫操作記錄就變成了100條記錄.相當(dāng)于將前面的執(zhí)行全部合并了.原本很大AOF變小了.

執(zhí)行這個操作的命令是:BGREWRITEAOF (background rewrite append only file)

這個快照長什么樣呢?基本和一般的寫日志沒什么兩樣,也是一條一條的寫記錄..比如現(xiàn)在Redis中總共存了3條string類型的數(shù)據(jù)a=>1,b=>2,c=>3.那這個快照的基本內(nèi)容就是寫入a=>1,寫入b=>2,寫入c=>3.

這時候要用AOF進(jìn)行恢復(fù)的時候,只要先執(zhí)行了前面幾條,就能夠恢復(fù)當(dāng)前狀態(tài),然后再執(zhí)行之后來的寫操作,就能完全重現(xiàn)數(shù)據(jù)了.
aof(append only file)日志文件有哪些用處
內(nèi)部實現(xiàn)

我們大概知道了執(zhí)行BGREWRITEAOF時都發(fā)生了什么,下面來說一下Redis是如何實現(xiàn)的.分下面幾步:

fork! Redis通過fork產(chǎn)生子進(jìn)程.

子進(jìn)程對當(dāng)前數(shù)據(jù)執(zhí)行遍歷操作,將當(dāng)前所有數(shù)據(jù)都生成一條寫入日志,將這些日志寫入一個臨時文件.(其實是子進(jìn)程寫了一個臨時文件,又再rename成了另一個臨時文件)

父子進(jìn)程是并行執(zhí)行的,在子進(jìn)程遍歷并寫臨時文件的時候,父進(jìn)程在照常接收請求,處理請求,寫AOF,不過這時他是把新來的AOF寫在一個緩沖區(qū)中.

當(dāng)子進(jìn)程完成遍歷操作,寫完臨時文件后,就會退出.這時父進(jìn)程的wait3函數(shù)會接收到子進(jìn)程退出的消息,他會把自己現(xiàn)在收集在緩沖區(qū)中的所有AOF追加在臨時文件中.

最后一步,把臨時文件rename一下,改名為appendonly.aof,這時原來的aof文件被覆蓋.整個過程完成.

如果你的AOF文件稍微大點,你可以在一個終端執(zhí)行BGREWRITEAOF,然后立刻ls 連著查看幾次redis的data目錄,就可以看到,先生成了一個臨時文件,臨時文件比原來的appendonly.aof小一些,然后臨時文件消失,而原來的appendonly.aof變小了,其實就是臨時文件rename成了appendonly.aof..覆蓋了原來的大文件.看起來像是臨時文件消失了。


看完上述內(nèi)容,你們對aof日志文件的用處有哪些有進(jìn)一步的了解嗎?如果還想了解更多知識或者相關(guān)內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,感謝大家的支持。


本文名稱:aof日志文件的用處有哪些-創(chuàng)新互聯(lián)
標(biāo)題路徑:http://weahome.cn/article/csosog.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部