溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

Redis中AOF持久化方式的工作流程

發(fā)布時(shí)間:2020-05-22 15:47:09 來源:億速云 閱讀:444 作者:鴿子 欄目:關(guān)系型數(shù)據(jù)庫(kù)

Redis的RDB方式不能做到妙計(jì)持久化,但是AOF方式可以做到。如果數(shù)據(jù)比較重要,丟失會(huì)造成嚴(yán)重的后果,那么RDB方式明顯不合適,要用到AOF的方式。aof方式和mysql的binlog日志有些像,都只記錄新增、修改、刪除的操作。不同的是,redis會(huì)每隔一段時(shí)間后,會(huì)對(duì)aof文件進(jìn)行重寫,降低aof文件的大小。

AOF工作流程

這里,為什么命令要先寫入aof_buf,因?yàn)槿绻苯訉懭隺of文件,那么性能就完全取決去硬盤的io性能。寫入aof_buf是為了提高寫入的性能。

配置

appendonly:是否開啟aof持久化方式,默認(rèn)是no。如想開啟則改為yes。

dir:aof文件存放目錄

appendfilename:aof文件名

appendfsync:aof同步方式,有三個(gè)值,分別如下:

  • always:每寫入一個(gè)命令時(shí)就同步,數(shù)據(jù)的安全性最高,但性能差

  • everysec:每秒同步,默認(rèn)的方式,性能高,安全性也還行

  • no:同步操作交給操作系統(tǒng),數(shù)據(jù)的安全性最差。

auto-aof-rewrite-percentage 、auto-aof-rewrite-min-size 這兩個(gè)配置是和aof重寫機(jī)制相關(guān)的,只有同時(shí)滿足這兩個(gè)條件才會(huì)觸發(fā)重寫機(jī)制。

auto-aof-rewrite-min-size是表示重寫時(shí),文件大小必須必這個(gè)值要大,默認(rèn)值是64mb

auto-aof-rewrite-percentage表示目前文件大小比上次重寫后的文件大小大這么多才行。

AOF重寫

redis的aof重寫機(jī)制有手動(dòng)觸發(fā)和自動(dòng)觸發(fā)兩種方式。手動(dòng)觸發(fā)即輸入bgrewriteof命令。自動(dòng)觸發(fā)即滿足上述所有的兩個(gè)條件。

為什么重寫能縮小文件體積,有幾種情況:

  • 過期的鍵及已刪除的鍵將不會(huì)再記錄

  • 許多單個(gè)操作可以有一個(gè)操作來完成,比如lpush a、lpush b,重寫后就是lpush a b.

下面看看aof重寫流程

Redis中AOF持久化方式的工作流程

  1. 執(zhí)行bgrewriteof命令

  2. 主進(jìn)程fork出一個(gè)子進(jìn)程

  3. 原有的aof機(jī)制繼續(xù)運(yùn)行,同時(shí),也將新的命令寫入到aof_rewrite_buf中

  4. 子進(jìn)程生成新的aof文件

  5. 通知父進(jìn)程,新的aof文件已經(jīng)生成成功;將aof_rewrite_buf中的命令追加到新的aof文件中;用新的aof文件替換舊的aof文件。

  6. 完成以上步驟后,aof重寫就完成了。

注意,如果一個(gè)服務(wù)器上面有多個(gè)redis服務(wù),那么最好將他們重寫的時(shí)間分隔開,防止io及cpu競(jìng)爭(zhēng)過大。

以上就是Redis持久化之AOF方式的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注億速云其它相關(guān)文章!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI