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

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

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

Redis 中的 RDB 與 AOF

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

RDB

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

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

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

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

??優(yōu)點(diǎn)??

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

??缺點(diǎn)??

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

AOF

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

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

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

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

??優(yōu)點(diǎn)??

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

??缺點(diǎn)??

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

小結(jié)

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

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

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

相關(guān)文章

  • K8S redis 部署的項(xiàng)目實(shí)踐

    K8S redis 部署的項(xiàng)目實(shí)踐

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

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

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

    Redis緩存和Redis分布式鎖使用及說(shuō)明

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

    redis不能訪問(wèn)本機(jī)真實(shí)ip地址的解決方案

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

    Redis 實(shí)現(xiàn)消息隊(duì)列實(shí)際案例

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

    redis發(fā)布訂閱_動(dòng)力節(jié)點(diǎn)Java學(xué)院整理

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

    python中使用redis用法詳解

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

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

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

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

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

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

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

最新評(píng)論

泌阳县| 普定县| 滨海县| 库伦旗| 泗阳县| 东乌| 金山区| 大姚县| 玛曲县| 特克斯县| 中卫市| 周宁县| 定结县| 库伦旗| 卫辉市| 鹤庆县| 柏乡县| 厦门市| 潜江市| 北安市| 湘潭县| 长治市| 闸北区| 长寿区| 曲靖市| 察隅县| 东城区| 盘锦市| 灌云县| 香格里拉县| 弋阳县| 禹州市| 新安县| 乐东| 丹凤县| 涿鹿县| 土默特右旗| 丰原市| 获嘉县| 弋阳县| 佳木斯市|