91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis6.x持久化之AOF的示例分析

發布時間:2021-09-09 16:55:09 來源:億速云 閱讀:107 作者:柒染 欄目:編程語言

Redis6.x持久化之AOF的示例分析,針對這個問題,這篇文章詳細介紹了相對應的分析和解答,希望可以幫助更多想解決這個問題的小伙伴找到更簡單易行的方法。

AOF概述

默認的AOF持久化策略是每秒鐘fsync一次,fsync是指把緩存中的寫指令記錄到磁盤中,在這種情況下,Redis仍可以保持很高的性能。

當然由于OS會在內核中緩存 write做的修改,所以可能不是立即寫到磁盤上。這樣aof方式的持久化也還是有可能會丟失部分修改。不過可以通過配置文件告訴Redis,想要通過fsync函數強制os寫入到磁盤的時機。

AOF方式在同等數據規模的情況下,AOF文件要比RDB文件的體積大,因此AOF方式的恢復速度也要慢于RDB方式。

AOF優缺點

AOF優點:

更好的保護數據不丟失 、性能高、可做緊急恢復

AOF缺點:

文件比RDB文件大、寫的QPS比RDB低

AOF的配置

1:appendonly:是否開啟AOF

2:appendfilename:設置AOF的日志文件名

3:appendfsync:設置AOF日志如何同步到磁盤,fsync()調用,用來告訴操作系統立即將緩存的指令寫入磁盤,有三個選項:

(1)always:每次寫都強制調用fsync,這種模式下,redis會相對較慢,但數據最安全 
(2)everysec:每秒啟用一次fsync
(3)no:不調用fsync()。而是讓操作系統自行決定sync的時間。這種模式下,redis的性能會最快

4:no-appendfsync-on-rewrite:設置當redis在rewrite的時候,是否允許appendsync。因為redis進程在進行AOF重寫的時候,fsync()在主進程中的調用會被阻止,也就是redis的持久化功能暫時失效。默認為no,這樣能保證數據安全

5:auto-aof-rewrite-min-size:設置一個最小大小,是為了防止在aof很小時就觸發重寫

6:auto-aof-rewrite-percentage:設置自動進行AOF重寫的基準值,也就是重寫啟動時的AOF文件大小,假如redis自啟動至今還沒有進行過重寫,那么啟動時aof文件的大小會被作為基準值。這個基準值會和當前的aof大小進行比較。如果當前aof大小超出所設置的增長比例,則會觸發重寫。如果設置auto-aof-rewrite-percentage為0,則會關閉此重寫功能

AOF日志恢復

如果在追加日志時,恰好遇到磁盤空間滿或斷電等情況,導致日志寫入不完整,也沒有關系,Redis提供了redis-check-aof工具,可以用來進行日志修復,基本步驟如下:

1:備份被寫壞的AOF文件
2:運行redis-check-aof –fix進行修復
3:用diff -u來看下兩個文件的差異,確認問題點
4:重啟redis,加載修復后的AOF文件

AOF重寫

AOF采用文件追加方式,這會導致AOF文件越來越大.

為此,Redis提供了AOF文件重寫(rewrite)機制,即當AOF文件的大小超過所設定的閾值時,Redis就會啟動AOF文件的內容壓縮,只保留可以恢復數據的最小指令集。

可以使用命令bgrewriteaof

AOF重寫的觸發機制

Redis是這樣工作的:

Redis會記錄上次重寫時的AOF大小。

假如自啟動至今還沒有進行過重寫,那么啟動時AOF文件的大小會被作為基準值,這個基準值會和當前的AOF大小進行比較,如果當前AOF大小超出所設置的增長比例,則會觸發重寫。

另外,你還需要設置一個最小大小,是為了防止在AOF很小時就觸發重寫

AOF重寫的基本原理

1:在重寫開始前,redis會創建一個“重寫子進程”,這個子進程會讀取現有的AOF文件,并將其包含的指令進行分析壓縮并寫入到一個臨時文件中。

2:與此同時,主進程會將新接收到的寫指令一邊累積到內存緩沖區中,一邊繼續寫入到原有的AOF文件中,這樣做是保證原有的AOF文件的可用性,避免在重寫過程中出現意外。

3:當“重寫子進程”完成重寫工作后,它會給父進程發一個信號,父進程收到信號后就會將內存中緩存的寫指令追加到新AOF文件中

4:當追加結束后,redis就會用新AOF文件來代替舊AOF文件,之后再有新的寫指令,就都會追加到新的AOF文件中

5:重寫aof文件的操作,并沒有讀取舊的aof文件,而是將整個內存中的數據庫內容用命令的方式重寫了一個新的aof文件,這點和快照有點類似

RDB+AOF混合方式概述

RDB+AOF的混合方式是:先使用RDB進行快照存儲,然后使用AOF持久化記錄所有的寫操作,當重寫策略滿足或手動觸發重寫的時候,將最新的數據存儲為新的RDB記錄。

這樣的話,重啟服務的時候會從RDB和AOF兩部分恢復數據,既保證了數據完整性,又提高了恢復數據的性能。

開啟混合方式:

設置aof-use-rdb-preamble的值為 yes

數據的恢復順序

1:判斷是否開啟AOF持久化,若開啟了AOF,則使用AOF持久化文件恢復數據

2:如果AOF文件不存在,否則使用RDB持久化文件恢復數據

3:如果AOF文件和RDB文件都不存在則直接啟動Redis

4:如果AOF或RDB文件出現錯誤,則啟動失敗返回錯誤信息

關于Redis6.x持久化之AOF的示例分析問題的解答就分享到這里了,希望以上內容可以對大家有一定的幫助,如果你還有很多疑惑沒有解開,可以關注億速云行業資訊頻道了解更多相關知識。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

黎平县| 黄大仙区| 南丹县| 修水县| 仪陇县| 蕉岭县| 枞阳县| 白朗县| 黔江区| 五河县| 乐都县| 宁夏| 盐亭县| 杭锦旗| 连平县| 得荣县| 中卫市| 平陆县| 望江县| 睢宁县| 克东县| 濉溪县| 武邑县| 黄骅市| 隆子县| 施甸县| 滨州市| 山西省| 从江县| 泗洪县| 南涧| 定结县| 邹平县| 新巴尔虎右旗| 新巴尔虎左旗| 无极县| 泸州市| 怀远县| 简阳市| 和平区| 莱阳市|