溫馨提示×

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

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

Redis持久化之AOF

發(fā)布時(shí)間:2020-06-20 06:07:05 來源:網(wǎng)絡(luò) 閱讀:258 作者:hgditren 欄目:關(guān)系型數(shù)據(jù)庫

背景:RDB不足之處
1.耗時(shí),耗性能
生成快照文件耗時(shí),load快照文件耗時(shí)
Fork子進(jìn)程網(wǎng)絡(luò)開銷
寫文件磁盤I/O開銷

2.不可控,丟失數(shù)據(jù)
會(huì)丟失最后一次快照最后操作的數(shù)據(jù)。

一、工作流程
Redis寫操作命令 ——> aof緩沖區(qū) ——> aof文件

注意,aof緩沖區(qū)的數(shù)據(jù)同步到磁盤的頻率d由aof策略決定

二、AOF三種策略

1.Always 總是

每條指令都即時(shí)寫入
不會(huì)丟失數(shù)據(jù),磁盤I/O開銷

2.Every second每秒

系統(tǒng)默認(rèn)策略
每分鐘寫入一次
可能丟失一秒數(shù)據(jù)

3.No系統(tǒng)自動(dòng)

不可控

3、AOF重寫

隨著時(shí)間得推移,aof文件日益變大。會(huì)降低磁盤性能,降低數(shù)據(jù)恢復(fù)速度。
目的:1.減少磁盤占用;2.加快恢復(fù)速度。

重寫操作

方式一,客戶端手動(dòng)發(fā)送指令bgrewriteof
服務(wù)端fork子進(jìn)程,子進(jìn)程對(duì)內(nèi)存中的數(shù)據(jù)進(jìn)行回塑然后寫入現(xiàn)有的aof文件。

方式二,通過配置文件觸發(fā)
文件增長率
auto-aof-rewrite-percentage 100

最小文件尺寸
auto-aof-rewrite-min-size 64mb

四、AOF實(shí)驗(yàn)

1.redis寫操作

27.0.0.1:6379> set hello world
OK
127.0.0.1:6379> set hello php
OK
127.0.0.1:6379> set hello java
OK
127.0.0.1:6379> set hello jack
OK
127.0.0.1:6379> set zhang san
OK
127.0.0.1:6379> set li si
OK
127.0.0.1:6379> set li xiaolong
OK

上述操作多次覆寫hello,li兩個(gè)key。

2.查看aof日志文件

$ sudo cat -b /var/lib/redis/appendonly.aof 
     1  REDIS0009?  redis-ver5.0.3?
?    2  redis-bits?@?ctime??]used-mem??
 aof-preamble??$e???q   ?*2
     3  $6
     4  SELECT
     5  $1
     6  0
     7  *3
     8  $3
     9  set
    10  $5
    11  hello
    12  $5
    13  world
    14  *3
    15  $3
    16  set
    17  $5
    18  hello
    19  $3
    20  php
    21  *3
    22  $3
    23  set
    24  $5
    25  hello
    26  $4
    27  java
    28  *3
    29  $3
    30  set
    31  $5
    32  hello
    33  $4
    34  jack
    35  *3
    36  $3
    37  set
    38  $5
    39  zhang
    40  $3
    41  san
    42  *3
    43  $3
    44  set
    45  $2
    46  li
    47  $2
    48  si
    49  *3
    50  $3
    51  set
    52  $2
    53  li
    54  $8
    55  xiaolong

3.重寫aof

127.0.0.1:6379> bgrewriteaof
Background append only file rewriting started

4.查看重寫后的aof日志文件

whqlkj@whqlkj:~$ sudo cat -b /var/lib/redis/appendonly.aof 
     1  REDIS0009?  redis-ver5.0.3?
?    2  redis-bits?@?ctime????]used-mem??
 aof-preamble???zhangsanlxiaolonghellojack??X?-???

五、RDB與AOF對(duì)比

對(duì)比環(huán)節(jié) RDB AOF
啟動(dòng)優(yōu)先級(jí)
數(shù)據(jù)恢復(fù)速度
文件大小 小(rdb二進(jìn)制壓縮文件) 大(重寫后的日志記錄文件)
數(shù)據(jù)安全 rdb丟失數(shù)據(jù)(可能會(huì)丟失最后一次save/bgsave快照之后操作的數(shù)據(jù)) aof根據(jù)策略決定(詳見3種同步策略)
操作重量級(jí) 重(rdb快照) 輕(aof追加日志)
向AI問一下細(xì)節(jié)

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

AI