最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文帶你了解Redis中RDB與AOF的區(qū)別

 更新時間:2023年06月09日 10:55:06   作者:不肯過江東丶  
Redis 在持久化時,給我們提供了兩種方式,這兩種方式就是 RDB 與 AOF,那這兩種方式有什么區(qū)別呢,本文就帶大家詳細的了解一下二者的區(qū)別,需要的朋友可以參考下

Redis 中的 RDB 與 AOF

我們都知道,Redis 運行時是將數(shù)據(jù)保存在內(nèi)存中的,如果服務(wù)器宕機或者重啟,那么內(nèi)存中的數(shù)據(jù)必然會丟失,從而影響正常的業(yè)務(wù)運行。所以,我們就必須要把數(shù)據(jù)持久化到磁盤,以便服務(wù)器故障時進行數(shù)據(jù)恢復(fù)。Redis 在持久化時,給我們提供了兩種方式,這兩種方式就是 RDB 與 AOF。

RDB

RDB 即 RedisDB 的縮寫,這種持久化方式是將整個 Redis 內(nèi)存數(shù)據(jù)持久化到一個 .rdb 文件中。它保存了 Redis 在某個時間點上的數(shù)據(jù)集,這種數(shù)據(jù)集文件非常適用于備份, 比如說,你可以每小時備份出一個 .rdb 文件,并且在每天的24點也備份出一個 .rdb 文件。 這樣即使遇上問題,也可以隨時將數(shù)據(jù)集還原到不同的版本。這時候可能就有小伙伴要提出疑問了:“如果 Redis 在做持久化的同時,內(nèi)存數(shù)據(jù)被修改了怎么辦呢?比如數(shù)據(jù)一開始是 A,但是在做持久化的時候由 A 變成了 B,那最終持久化到 .rdb 文件中的值是多少呢???” 這個問題問的就很好了,我們一起來揭秘一下??

??大家一起來揭秘??
在揭秘之前,我們需要先提一個小的知識點,不知道 Linux 下的 fork 函數(shù)大家有沒有用過呢?fork 函數(shù)是 Linux 的子進程創(chuàng)建函數(shù)。它會通過復(fù)制主進程的方式快速創(chuàng)建一個子進程,并且在 調(diào)用 fork 函數(shù)時,子進程和主進程有相同的數(shù)據(jù)內(nèi)容,二者運行在各自的內(nèi)存空間,互不影響。Redis 就是通過調(diào)用 fork 的方式來創(chuàng)建子進程,并通過子進程進行數(shù)據(jù)的持久化,所以子進程就會保留持久化開始時刻的數(shù)據(jù)狀況。所以,對于上面那個問題來說,持久化的數(shù)據(jù)依然是 A。

關(guān)于 RDB,Redis 又提供了2種使用方式,分別是命令和配置文件。如果我們選擇使用命令的話,就可以通過 save 和 bgsave 命令,觸發(fā)持久化操作;當(dāng)然我們也可以選擇使用配置文件的方式來進行持久化,比如可以修改 Redis 的配置文件為 save 100 10 (100 秒內(nèi)有10個key被修改時觸發(fā)持久化)、 save 60 10000(60 秒內(nèi)有10000個key被修改時觸發(fā)持久化)等等。

通過上面的了解,我們也可以總結(jié)出 RDB 的一些優(yōu)缺點了??

??優(yōu)點??

?? ① RDB 非常適用于災(zāi)難恢復(fù)。它只有一個文件,并且內(nèi)容都非常緊湊,在數(shù)據(jù)恢復(fù)時會比較容易操作。
?? ② RDB 可以最大化 Redis 的性能。父進程在保存 RDB 文件時唯一要做的就是 fork 出一個子進程,然后這個子進程就會處理接下來的所有保存工作,父進程無須執(zhí)行任何磁盤 I/O 操作。

??缺點??

?? ① 如果你需要盡量避免在服務(wù)器故障時丟失數(shù)據(jù),那么我們就最好不要選擇 RDB 了。雖然 Redis 允許你設(shè)置不同的保存點來控制保存 RDB 文件的頻率,但是 RDB 文件需要保存整個數(shù)據(jù)集的狀態(tài),所以它并不是一個輕松的操作。因此可能會至少花費 5 分鐘甚至更多時間才能保存好一次 RDB 文件。那么在這種情況下,一旦發(fā)生故障停機,就可能會丟失好幾分鐘的數(shù)據(jù)。
?? ② 每次保存 RDB 文件的時候,Redis 都要 fork 出一個子進程,并由子進程來進行實際的持久化工作。 那么如果在數(shù)據(jù)集比較龐大時, fork 操作可能會非常耗時,并可能會造成服務(wù)器在若干毫秒內(nèi)停止處理客戶端的請求;如果數(shù)據(jù)集非常巨大,并且 CPU 時間非常緊張的話,那么這種停止時間甚至可能會更長。

AOF

我們了解完 RDB 后再一起來看看 AOF。它就類似于 Binlog 的 statement 模式,AOF 會將 Redis 中每一步對數(shù)據(jù)修改的操作記錄都記錄到相應(yīng)的文件中。同時為了降低 I/O 消耗,AOF 寫文件時,會先將數(shù)據(jù)寫到緩沖區(qū),然后再把緩沖區(qū)的內(nèi)容寫到磁盤,這個過程叫做 fsync。我們也可以設(shè)置不同的 fsync 策略??

appendfsync always :每次寫操作都會將內(nèi)容寫到磁盤,但是會影響性能 appendfsync everysec :每秒寫一次(AOF 的默認策略) appendfsync no :消極等待OS刷新(一般30s),但是可能丟失數(shù)據(jù)

隨著服務(wù)器運行時間越來越長,AOF 文件也勢必會越來越大,Redis 可以在 AOF 文件體積變得過大時,自動地在后臺對 AOF 進行重寫。 重寫后的新 AOF 文件包含了恢復(fù)當(dāng)前數(shù)據(jù)集所需的最小命令集合。 整個重寫操作是絕對安全的,因為 Redis 在創(chuàng)建新 AOF 文件的過程中,會繼續(xù)將命令追加到現(xiàn)有的 AOF 文件里面,即使重寫過程中發(fā)生停機,現(xiàn)有的 AOF 文件也不會丟失。 而一旦新 AOF 文件創(chuàng)建完畢,Redis 就會從舊 AOF 文件切換到新 AOF 文件,并開始對新 AOF 文件進行追加操作。

通過上面的了解,我們也可以總結(jié)出 AOF 的一些優(yōu)缺點了??

??優(yōu)點??

?? ① 不易丟失數(shù)據(jù),數(shù)據(jù)完整性好。我們可以設(shè)置fsync策略,一般默認是 everysec,也可以設(shè)置每次寫入追加,所以即使服務(wù)宕機了,也最多丟失一秒的數(shù)據(jù)。

??缺點??

?? ① 性能相對較差:它的操作模式?jīng)Q定了它會對 Redis 的性能有所損耗。
?? ② 由于 AOF 文件較大,所以就導(dǎo)致數(shù)據(jù)恢復(fù)會更慢一些。

小結(jié)

本人經(jīng)驗有限,有些地方可能講的沒有特別到位,如果您在閱讀的時候想到了什么問題,歡迎在評論區(qū)留言,我們后續(xù)再一一探討??‍

如果文章中有錯誤,歡迎大家留言指正;若您有更好、更獨到的理解,歡迎您在留言區(qū)留下您的寶貴想法。

到此這篇關(guān)于一文帶你了解Redis中RDB與AOF的區(qū)別的文章就介紹到這了,更多相關(guān)Redis中RDB與AOF的區(qū)別內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • K8S redis 部署的項目實踐

    K8S redis 部署的項目實踐

    本文主要介紹了K8S redis 部署的項目實踐,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-05-05
  • 解讀緩存db redis local的取舍之道

    解讀緩存db redis local的取舍之道

    這篇文章主要介紹了解讀緩存db redis local的取舍之道,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-05-05
  • Redis緩存和Redis分布式鎖使用及說明

    Redis緩存和Redis分布式鎖使用及說明

    這段描述融合了Redis緩存和Redis分布式鎖兩個核心關(guān)鍵詞,詳細介紹了它們在系統(tǒng)中的應(yīng)用場景、核心邏輯及典型場景,特別強調(diào)了兩者在數(shù)據(jù)一致性和生命周期上的區(qū)別,適合需要優(yōu)化系統(tǒng)性能和解決分布式系統(tǒng)布沖突的讀者
    2026-05-05
  • redis不能訪問本機真實ip地址的解決方案

    redis不能訪問本機真實ip地址的解決方案

    這篇文章主要介紹了redis不能訪問本機真實ip地址的解決方案,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2021-07-07
  • Redis 實現(xiàn)消息隊列實際案例

    Redis 實現(xiàn)消息隊列實際案例

    文章探討Redis作為消息隊列的三大核心方案(List、Pub/Sub、Stream)及適用場景,分析了輕量部署、高性能、多語言支持等優(yōu)勢,指出Stream在可靠性、消息確認、死信隊列等企業(yè)級需求上表現(xiàn)最佳,適合電商等高吞吐場景,并提供了實際應(yīng)用案例與優(yōu)化建議,感興趣的朋友一起看看吧
    2025-09-09
  • redis發(fā)布訂閱_動力節(jié)點Java學(xué)院整理

    redis發(fā)布訂閱_動力節(jié)點Java學(xué)院整理

    這篇文章主要介紹了redis發(fā)布訂閱,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-08-08
  • python中使用redis用法詳解

    python中使用redis用法詳解

    Redis擁有豐富的數(shù)據(jù)結(jié)構(gòu),擁有事務(wù)功能,保證命令的原子性。由于是內(nèi)存數(shù)據(jù)庫,讀寫非常高速,可達10w/s的評率,所以一般應(yīng)用于數(shù)據(jù)變化快、實時通訊、緩存等。這篇文章給大家講解一下Python如何使用Redis,并進行相關(guān)的實戰(zhàn)操作。
    2022-12-12
  • 詳解redis中的下載和安裝(最新推薦)

    詳解redis中的下載和安裝(最新推薦)

    本文詳細介紹了如何在Linux和Docker上安裝、配置、啟動和關(guān)閉Redis,包括下載安裝包、解壓、編譯安裝、配置文件修改、前臺和后臺啟動、關(guān)閉以及Docker容器化部署等步驟,感興趣的朋友一起看看吧
    2025-03-03
  • redis通過redis-dump鏡像實現(xiàn)數(shù)據(jù)遷移

    redis通過redis-dump鏡像實現(xiàn)數(shù)據(jù)遷移

    本文主要介紹了redis通過redis-dump鏡像實現(xiàn)數(shù)據(jù)遷移,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2025-04-04
  • 一文掌握Redis的三種集群方案(小結(jié))

    一文掌握Redis的三種集群方案(小結(jié))

    這篇文章主要介紹了一文掌握Redis的三種集群方案(小結(jié)),文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-02-02

最新評論

茂名市| 襄樊市| 伊宁市| 新竹市| 营山县| 庄浪县| 石景山区| 保康县| 大新县| 安西县| 孙吴县| 海阳市| 南昌县| 四子王旗| 册亨县| 那曲县| 松原市| 鸡东县| 综艺| 秀山| 英超| 亳州市| 泗洪县| 东光县| 息烽县| 云霄县| 宁晋县| 元阳县| 闸北区| 西藏| 莱西市| 泽普县| 鹤峰县| 石林| 襄樊市| 巴里| 江北区| 昌江| 敦化市| 安岳县| 元江|