国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

【征服redis8】Redis的AOF持久化

這篇具有很好參考價值的文章主要介紹了【征服redis8】Redis的AOF持久化。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

Redis 支持多種持久化方式來保證數(shù)據(jù)的可靠性和持久性。前面我們介紹了RDB方式。我們我們介紹第二種方式——AOF(Append Only File)機(jī)制是一種常用的持久化方式,它記錄了所有對 Redis 數(shù)據(jù)庫進(jìn)行修改的命令,在 Redis 重啟時可以使用這些命令來重構(gòu)數(shù)據(jù)庫狀態(tài)。?

目錄

1.AOF的基本原理

1.1 如何啟動AOF

1.2?AOF 文件的創(chuàng)建

1.3. AOF 文件的寫入

1.4. AOF 文件的重寫

1.5. AOF 文件的恢復(fù)

1.6. 小結(jié)

2. RDB和AOF混合方式

3 .AOF 持久化實(shí)踐


【征服redis8】Redis的AOF持久化,精通redis,一個項(xiàng)目征服Java,redis,mybatis,數(shù)據(jù)庫

1.AOF的基本原理

1.1 如何啟動AOF

在 Redis 的配置文件中,可以通過以下配置項(xiàng)來設(shè)置?AOF?持久化相關(guān)的參數(shù):

1. appendonly:設(shè)置是否開啟 AOF 持久化,默認(rèn)為 no(關(guān)閉狀態(tài))。

2. appendfilename:設(shè)置 AOF 文件名,默認(rèn)為 appendonly.aof。

3. appendfsync:設(shè)置 AOF 文件同步策略,有以下三種可選值:

- always:每次寫入都會同步到磁盤,最安全但性能最差;
- everysec:每秒同步一次到磁盤,安全性和性能的折中方案;
- no:由操作系統(tǒng)決定何時同步,最不安全但性能最好。

4. auto-aof-rewrite-percentage:設(shè)置 AOF 重寫觸發(fā)的條件之一,即 AOF 文件大小增長率達(dá)到該值時觸發(fā) AOF 重寫,默認(rèn)為 100。

5. auto-aof-rewrite-min-size:設(shè)置 AOF 重寫觸發(fā)的條件之一,即 AOF 文件大小達(dá)到該值時觸發(fā) AOF 重寫,默認(rèn)為 64MB。

6. aof-load-truncated:設(shè)置當(dāng) Redis 以 AOF 模式啟動時,是否自動修復(fù)截?cái)嗟?AOF 文件,默認(rèn)為 yes。

7. aof-use-rdb-preamble:設(shè)置是否在 AOF 文件中使用 RDB 文件的前綴,默認(rèn)為 yes。

修改 Redis 配置文件后,需要重啟 Redis 才能使配置生效。同時,對于 AOF文件同步策略的選擇,需要根據(jù)實(shí)際情況進(jìn)行權(quán)衡和選擇。如果對數(shù)據(jù)的安全性要求非常高,可以選擇 always
策略;如果對性能的要求比較高,可以選擇 everysec 策略。

1.2?AOF 文件的創(chuàng)建

當(dāng)啟用 AOF 持久化機(jī)制時,Redis 會在啟動時創(chuàng)建一個 AOF 文件,用于記錄所有寫命令。AOF 文件的默認(rèn)文件名為 appendonly.aof,可以通過配置文件中的 appendfilename 參數(shù)進(jìn)行修改。如果 AOF 文件已經(jīng)存在,則 Redis 會在啟動時讀取文件中的內(nèi)容,并將其加載到內(nèi)存中。

1.3. AOF 文件的寫入

當(dāng) Redis 執(zhí)行寫命令時,會將命令追加到 AOF 文件的末尾。如果 AOF 文件不存在,則 Redis 會自動創(chuàng)建一個新的 AOF 文件。如果 AOF 文件已經(jīng)存在,則 Redis 會將命令追加到文件的末尾。

Redis 為了提高寫入性能,通常會將多個命令緩存到內(nèi)存中,然后在滿足一定條件時批量寫入到 AOF 文件中。具體來說,Redis 會維護(hù)一個 AOF 緩沖區(qū),將每個寫命令追加到緩沖區(qū)的末尾。當(dāng)緩沖區(qū)的大小超過一定閾值時,或者緩沖區(qū)中的命令已經(jīng)等待了一定時間后,Redis 會將緩沖區(qū)中的命令批量寫入到 AOF 文件中。
?

【征服redis8】Redis的AOF持久化,精通redis,一個項(xiàng)目征服Java,redis,mybatis,數(shù)據(jù)庫

1.3. AOF 文件的同步
為了保證寫命令的可靠性和持久性,Redis 會在寫入 AOF 文件后進(jìn)行同步操作,將數(shù)據(jù)從內(nèi)存中刷到磁盤中。這就是我通常所說的刷盤操作。刷盤操作可以分為兩種方式:

  • 同步磁盤上的所有數(shù)據(jù),每次寫入 AOF 文件時,Redis 會調(diào)用 fsync 系統(tǒng)調(diào)用將數(shù)據(jù)從內(nèi)存刷到磁盤中。這種方式可以保證數(shù)據(jù)的可靠性,但是會帶來較大的性能損耗。
  • 定期同步磁盤上的數(shù)據(jù),Redis 也可以通過配置文件中的 appendfsync 參數(shù)來控制 AOF 文件的同步方式。其中,有三種常用的方式:
  1. always:每次寫入 AOF 文件時都進(jìn)行同步操作,可以保證數(shù)據(jù)的可靠性,但是會帶來較大的性能損耗。
  2. everysec:每秒鐘對 AOF 文件進(jìn)行一次同步操作,可以在一定程度上平衡數(shù)據(jù)安全和性能需求。
  3. no:不進(jìn)行同步操作,只在 Redis 進(jìn)程退出時進(jìn)行一次同步操作,可以提高性能,但是會帶來一定的數(shù)據(jù)風(fēng)險(xiǎn)。

這三種方式的對比,我們可以通過下面的表來判斷:

【征服redis8】Redis的AOF持久化,精通redis,一個項(xiàng)目征服Java,redis,mybatis,數(shù)據(jù)庫

總結(jié)來說,就是:

  1. 如果要高性能,就選擇 No 策略;
  2. 如果要高可靠,就選擇 Always 策略;
  3. 如果允許數(shù)據(jù)丟失一點(diǎn),但又想性能高,就選擇 Everysec策略。

1.4. AOF 文件的重寫

Redis AOF 文件在長時間運(yùn)行后可能會變得非常大,不僅占用磁盤空間,還會影響 Redis 的性能。為了解決這個問題,Redis 提供了 AOF 文件重寫機(jī)制,可以將 AOF 文件中的寫命令進(jìn)行壓縮,生成一條等效的命令序列,從而減少 AOF 文件的大小。
【征服redis8】Redis的AOF持久化,精通redis,一個項(xiàng)目征服Java,redis,mybatis,數(shù)據(jù)庫

AOF 文件重寫機(jī)制的實(shí)現(xiàn)原理如下:

(1)Redis 會啟動一個新的子進(jìn)程,用于執(zhí)行 AOF 文件重寫操作。

(2)Redis 主進(jìn)程會將所有寫命令發(fā)送到子進(jìn)程中,子進(jìn)程會執(zhí)行這些命令,并生成一條等效的命令序列。

(3)子進(jìn)程會將等效命令序列寫入到一個新的 AOF 文件中,同時在寫入過程中進(jìn)行同步操作,保證數(shù)據(jù)的可靠性。

(4)當(dāng)子進(jìn)程完成 AOF 文件的重寫操作后,Redis 主進(jìn)程會將新的 AOF 文件重命名為原來的 AOF 文件,并刪除舊的 AOF 文件。

需要注意的是,AOF 文件重寫操作只會對已經(jīng)執(zhí)行過的寫命令進(jìn)行壓縮,新的寫命令仍然會被追加到 AOF 文件的末尾。Redis 會周期性地檢查 AOF 文件的大小,并在滿足一定條件時觸發(fā) AOF 文件重寫操作。

1.5. AOF 文件的恢復(fù)

AOF 的數(shù)據(jù)恢復(fù)過程設(shè)計(jì)很巧妙,它模擬一個 Redis 的服務(wù)過程。Redis 首先虛擬一個客戶端,讀取 AOF 文件恢復(fù) Redis 命令和參數(shù);接著過程就和服務(wù)客戶端一樣執(zhí)行命令相應(yīng)的函數(shù),從而恢復(fù)數(shù)據(jù),這樣做的目的無非是提高代碼的復(fù)用率。這些過程主要在 loadAppendOnlyFile() 中實(shí)現(xiàn)。我們可以理解為假的重放。

真實(shí)的過程當(dāng) Redis 重啟時,會根據(jù) AOF 文件中記錄的命令重構(gòu)數(shù)據(jù)庫狀態(tài)。具體來說,Redis 會按照 AOF 文件中記錄的命令順序,逐個執(zhí)行命令,并在執(zhí)行過程中重建數(shù)據(jù)庫狀態(tài)。需要注意的是,AOF 文件的恢復(fù)過程可能會比較耗時,因此需要在 Redis 配置文件中設(shè)置 AOF 文件的恢復(fù)方式,可以選擇同步方式(always、everysec)或異步方式(no)。

所以,Redis AOF 持久化機(jī)制,其實(shí)說白了就是redis啟動的時候創(chuàng)建一個server.aof_buf的文件,通過一個文件,實(shí)現(xiàn)了將寫命令追加到 AOF 文件中,并在需要時同步到磁盤中,從而保證了數(shù)據(jù)的可靠性和持久性。 當(dāng)異常宕機(jī)需要恢復(fù)數(shù)據(jù)的時候又通過讀取文件,回放之前的命令,進(jìn)行數(shù)據(jù)還原。
由此大家也可以推斷出它存在的弊端。

1.6. 小結(jié)

對于相同的數(shù)據(jù)集來說,AOF 文件的體積通常要大于 RDB 文件的體積。

根據(jù)所使用的 fsync 策略,AOF 的速度可能會慢于 RDB 。

在一般情況下, 每秒 fsync 的性能依然非常高, 而關(guān)閉 fsync 可以讓 AOF 的速度和 RDB 一樣快, 即使在高負(fù)荷之下也是如此。 不過在處理巨大的寫入載入時,RDB 可以提供更有保證的最大延遲時間(latency)

到此我們學(xué)完了 Redis 的持久化方式 RDB 和AOF 。那么我們對比一下。整理出如下表格:

RDB AOF
啟動優(yōu)先級
體積 比 AOF 小 比 RDB 大
恢復(fù)速度 比 AOF 快 比 RDB 慢
數(shù)據(jù)安全性 在定時備份時可能會丟失一定量的數(shù)據(jù) 根據(jù)同步策略決定,相對更安全
數(shù)據(jù)一致性 RDB 持久化的數(shù)據(jù)可能不是最新的,但數(shù)據(jù)一致性較高 AOF 持久化的數(shù)據(jù)較新,但數(shù)據(jù)一致性較低
運(yùn)維復(fù)雜度 相對簡單,只需要定期備份 RDB 文件即可 相對復(fù)雜,需要配置 AOF 緩沖區(qū)大小、同步策略等參數(shù)
寫入性能 相對較高,因?yàn)?RDB 只需要生成一次快照文件即可完成持久化操作 相對較低,因?yàn)?AOF 需要將每一次寫操作都寫入到 AOF 文件中
讀取性能 相對較高,因?yàn)?RDB 文件讀取速度快 相對較低,因?yàn)樾枰獙?AOF 文件中的所有寫操作都執(zhí)行一遍才能恢復(fù)
文件格式 二進(jìn)制格式,比較緊湊 文本格式,可讀性好
恢復(fù)方式 通過加載 RDB 文件來恢復(fù)數(shù)據(jù)庫 通過加載 AOF 文件并執(zhí)行其中的寫操作來恢復(fù)數(shù)據(jù)庫
文件重寫方式 通過 BGSAVE 命令生成新的 RDB 文件來實(shí)現(xiàn)文件重寫 通過執(zhí)行 BGREWRITEAOF 命令來生成新的 AOF 文件實(shí)現(xiàn)文件重寫

2. RDB和AOF混合方式

Redis 4.0 中提出了一個混合使用 AOF 日志和內(nèi)存快照的方法。簡單來說,內(nèi)存快照以一定的頻率執(zhí)行,在兩次快照之間,使用 AOF 日志記錄這期間的所有命令操作。

混合方式可以同時利用 RDB 的快速恢復(fù)和 AOF 的數(shù)據(jù)安全性。在這種混合方式下,Redis 會同時生成 RDB 文件和 AOF 文件,來保證數(shù)據(jù)的安全性和可靠性。

具體來說,可以采用如下的持久化配置:

將 AOF 模式設(shè)置為 always,并設(shè)置合適的同步策略,以確保 Redis 在執(zhí)行寫操作時,都將對應(yīng)的操作寫入 AOF 文件中。

在 Redis 中啟用 RDB 持久化,并設(shè)置一個合適的持久化間隔,以確保 Redis 在每隔一定時間內(nèi),執(zhí)行一次 RDB 文件的快照生成操作。

將 Redis 配置為在啟動時,先嘗試使用 AOF 文件進(jìn)行恢復(fù),如果 AOF 文件不存在或損壞,則使用 RDB 文件進(jìn)行恢復(fù)。
【征服redis8】Redis的AOF持久化,精通redis,一個項(xiàng)目征服Java,redis,mybatis,數(shù)據(jù)庫

通過這種方式,可以將 RDB 和 AOF 的優(yōu)點(diǎn)結(jié)合起來,從而達(dá)到更加全面的數(shù)據(jù)保護(hù)和恢復(fù)能力。同時也需要注意,這種方式會帶來一定的存儲和性能開銷,需要根據(jù)實(shí)際情況進(jìn)行權(quán)衡和優(yōu)化。

參考 AOF

3 .AOF 持久化實(shí)踐

這個和上一篇一樣,后面研究一下如何在本地能啟動多個redis然后再補(bǔ)充如何實(shí)戰(zhàn)文章來源地址http://www.zghlxwxcb.cn/news/detail-803995.html

到了這里,關(guān)于【征服redis8】Redis的AOF持久化的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • Redis 持久化——AOF

    Redis 持久化——AOF

    使用 RDB 持久化有一個風(fēng)險(xiǎn),它可能會造成最新數(shù)據(jù)丟失的風(fēng)險(xiǎn)。因?yàn)?RDB 的持久化有一定的時間間隔,在這個時間段內(nèi)如果 Redis 服務(wù)意外終止的話,就會造成最新的數(shù)據(jù)全部丟失。 可能會操作 Redis 服務(wù)意外終止的條件: 安裝 Redis 的機(jī)器停止運(yùn)行,藍(lán)屏或者系統(tǒng)崩潰; 安裝

    2024年01月22日
    瀏覽(19)
  • Redis兩種持久化方案RDB持久化和AOF持久化

    Redis兩種持久化方案RDB持久化和AOF持久化

    Redis持久化 Redis有兩種持久化方案: RDB持久化 AOF持久化 1.1.RDB持久化 RDB全稱Redis Database Backup file(Redis數(shù)據(jù)備份文件),也被叫做Redis數(shù)據(jù)快照。簡單來說就是把內(nèi)存中的所有數(shù)據(jù)都記錄到磁盤中。當(dāng)Redis實(shí)例故障重啟后,從磁盤讀取快照文件,恢復(fù)數(shù)據(jù)??煺瘴募Q為RDB文件

    2024年02月14日
    瀏覽(28)
  • 全面解析 Redis 持久化:RDB、AOF與混合持久化

    前言: 每次你在游戲中看到玩家排行榜,或者在音樂應(yīng)用中瀏覽熱門歌單,有沒有想過這個排行榜是如何做到實(shí)時更新的?當(dāng)然,依靠 Redis 即可做到。 在技術(shù)領(lǐng)域,我們經(jīng)常聽到 「鍵值存儲」 這個詞。但在 Redis 的世界里,這只是冰山一角。Redis 的對象,不僅僅是簡單的數(shù)據(jù)

    2024年03月10日
    瀏覽(34)
  • redis 持久化 RDB + AOF

    redis 持久化 RDB + AOF

    RDB(Redis DataBase)和AOF(Append Only File) RDB,簡而言之,就是在不同的時間點(diǎn),將redis存儲的數(shù)據(jù)生成快照并存儲到磁盤等介質(zhì)上 AOF,那就是將redis執(zhí)行過的所有寫指令記錄下來,在下次redis重新啟動時,只要把這些寫指令從前到后再重復(fù)執(zhí)行一遍,就可以實(shí)現(xiàn)數(shù)據(jù)恢復(fù)了。

    2024年02月03日
    瀏覽(26)
  • 【Redis】Redis持久化機(jī)制RDB與AOF

    【Redis】Redis持久化機(jī)制RDB與AOF

    目錄 一、RDB 1、概念 2、RDB文件保存 3、執(zhí)行RDB 4、觸發(fā)RDB 5、fork原理 6、RDB的缺點(diǎn) 二、AOF 1、概念 2、開啟AOF 3、觸發(fā)AOF 4、觸發(fā)重寫AOF 三、區(qū)別 RDB全稱為Redis Database Backup File(Redis數(shù)據(jù)備份文件),也叫做Redis數(shù)據(jù)快照。簡單的來說就是把某一時刻Redis內(nèi)存里的數(shù)據(jù)都記錄到磁

    2024年02月08日
    瀏覽(40)
  • 【Redis】Redis持久化之AOF詳解(Redis專欄啟動)

    【Redis】Redis持久化之AOF詳解(Redis專欄啟動)

    ??作者簡介:小明java問道之路, 2022年度博客之星全國TOP3 ,專注于后端、中間件、計(jì)算機(jī)底層、架構(gòu)設(shè)計(jì)演進(jìn)與穩(wěn)定性建工設(shè)優(yōu)化。文章內(nèi)容兼具廣度深度、大廠技術(shù)方案,對待技術(shù)喜歡推理加驗(yàn)證,就職于知名金融公司后端高級工程師。 ? ? ? ?? ?? 熱衷分享,喜歡原

    2024年02月02日
    瀏覽(30)
  • Redis_持久化(AOF、RDB)

    Redis_持久化(AOF、RDB)

    目前,redis的持久化主要應(yīng)用AOF(Append Only File)和RDF兩大機(jī)制,AOF以日志的形式來記錄每個寫操作(增量保存),將redis執(zhí)行過的所有指令全部安全記錄下來(讀操作不記錄)。只許追加文件,但不可以改寫文件,redis啟動之初,會讀取該文件,重新構(gòu)建數(shù)據(jù)。 AOF默認(rèn)不開啟

    2024年02月13日
    瀏覽(23)
  • Redis持久化(RDB和AOF)

    目錄 方式一:RDB 方式二:AOF AOF重寫可能出現(xiàn)的問題及解決方案 方式三:RDB-AOF混合持久化 Redis持久化 :Redis是基于內(nèi)存數(shù)據(jù)庫,宕機(jī)后和數(shù)據(jù)會消失,當(dāng)Redis用作DB 時,DB數(shù)據(jù)要完整,所以一定要有一個完整的數(shù)據(jù)源文件,在系統(tǒng)啟動時,從這個完整的數(shù)據(jù)源中將數(shù)據(jù)load到

    2024年02月16日
    瀏覽(22)
  • Redis優(yōu)化 RDB AOF持久化

    Redis優(yōu)化 RDB AOF持久化

    ---------------------- Redis 高可用 ---------------------------------------- 在web服務(wù)器中,高可用是指服務(wù)器可以正常訪問的時間,衡量的標(biāo)準(zhǔn)是在多長時間內(nèi)可以提供正常服務(wù)(99.9%、99.99%、99.999%等等)。 但是在Redis語境中,高可用的含義似乎要寬泛一些,除了保證提供正常服務(wù)(如主

    2024年02月09日
    瀏覽(27)
  • Redis 持久化RDB和AOF

    Redis 有兩種持久化方案,RDB (Redis DataBase)和 AOF (Append Only File)。如果你想快速了解和使用RDB和AOF,可以直接跳到文章底部看總結(jié)。本章節(jié)通過配置文件,觸發(fā)快照的方式,恢復(fù)數(shù)據(jù)的操作,命令操作演示,優(yōu)缺點(diǎn)來學(xué)習(xí) Redis 的重點(diǎn)知識 持久化 。 RDB 是 Redis 默認(rèn)的持久化

    2024年02月14日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包