欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

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

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

Redis 中的 RDB 與 AOF

我們都知道,Redis 運(yùn)行時是將數(shù)據(jù)保存在內(nèi)存中的,如果服務(wù)器宕機(jī)或者重啟,那么內(nèi)存中的數(shù)據(jù)必然會丟失,從而影響正常的業(yè)務(wù)運(yùn)行。所以,我們就必須要把數(shù)據(jù)持久化到磁盤,以便服務(wù)器故障時進(jìn)行數(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 的子進(jìn)程創(chuàng)建函數(shù)。它會通過復(fù)制主進(jìn)程的方式快速創(chuàng)建一個子進(jìn)程,并且在 調(diào)用 fork 函數(shù)時,子進(jìn)程和主進(jìn)程有相同的數(shù)據(jù)內(nèi)容,二者運(yùn)行在各自的內(nèi)存空間,互不影響。Redis 就是通過調(diào)用 fork 的方式來創(chuàng)建子進(jìn)程,并通過子進(jìn)程進(jìn)行數(shù)據(jù)的持久化,所以子進(jìn)程就會保留持久化開始時刻的數(shù)據(jù)狀況。所以,對于上面那個問題來說,持久化的數(shù)據(jù)依然是 A。

關(guān)于 RDB,Redis 又提供了2種使用方式,分別是命令和配置文件。如果我們選擇使用命令的話,就可以通過 save 和 bgsave 命令,觸發(fā)持久化操作;當(dāng)然我們也可以選擇使用配置文件的方式來進(jìn)行持久化,比如可以修改 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 的性能。父進(jìn)程在保存 RDB 文件時唯一要做的就是 fork 出一個子進(jìn)程,然后這個子進(jìn)程就會處理接下來的所有保存工作,父進(jìn)程無須執(zhí)行任何磁盤 I/O 操作。

??缺點??

?? ① 如果你需要盡量避免在服務(wù)器故障時丟失數(shù)據(jù),那么我們就最好不要選擇 RDB 了。雖然 Redis 允許你設(shè)置不同的保存點來控制保存 RDB 文件的頻率,但是 RDB 文件需要保存整個數(shù)據(jù)集的狀態(tài),所以它并不是一個輕松的操作。因此可能會至少花費 5 分鐘甚至更多時間才能保存好一次 RDB 文件。那么在這種情況下,一旦發(fā)生故障停機(jī),就可能會丟失好幾分鐘的數(shù)據(jù)。
?? ② 每次保存 RDB 文件的時候,Redis 都要 fork 出一個子進(jìn)程,并由子進(jìn)程來進(jìn)行實際的持久化工作。 那么如果在數(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 的默認(rèn)策略) appendfsync no :消極等待OS刷新(一般30s),但是可能丟失數(shù)據(jù)

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

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

??優(yōu)點??

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

  • Redis字符串類型的常用命令小結(jié)

    Redis字符串類型的常用命令小結(jié)

    這篇文章給大家整理了在操作Redis字符串類型中的常用命令,文章總結(jié)的很全面,對大家學(xué)習(xí)Redis具有一定的參考借鑒價值,下面來一起看看吧。
    2016-09-09
  • Redis中三種特殊數(shù)據(jù)類型命令詳解

    Redis中三種特殊數(shù)據(jù)類型命令詳解

    Geospatial是地理位置類型,我們可以用來查詢附近的人、計算兩人之間的距離等,這篇文章主要介紹了Redis中三種特殊數(shù)據(jù)類型命令詳解,需要的朋友可以參考下
    2024-05-05
  • redis清空所有數(shù)據(jù)的三種方法

    redis清空所有數(shù)據(jù)的三種方法

    本文主要介紹了redis清空所有數(shù)據(jù)的三種方法,主要包括FLUSHALL,FLUSHDB,SCREPT FLUSH這三個指令,具有一定的參考價值,感興趣的可以了解一下
    2023-09-09
  • Redis分布式鎖如何實現(xiàn)續(xù)期

    Redis分布式鎖如何實現(xiàn)續(xù)期

    這篇文章主要介紹了Redis分布式鎖如何實現(xiàn)續(xù)期的操作,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-01-01
  • 詳解redis集群的三種方式

    詳解redis集群的三種方式

    Redis三種集群方式分別是主從復(fù)制,哨兵模式,Cluster集群,這篇文章主要介紹了redis集群的三種方式,本文給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2022-07-07
  • Redis 持久化 RDB 與 AOF的執(zhí)行過程

    Redis 持久化 RDB 與 AOF的執(zhí)行過程

    本文給大家記錄Redis 持久化RDB 與 AOF的執(zhí)行過程與配置,通過內(nèi)部觸發(fā) RDB 場景分析Redis 持久化 RDB的相關(guān)知識,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友參考下吧
    2021-11-11
  • ELK配置轉(zhuǎn)存redis緩存采集nginx訪問日志的操作方法

    ELK配置轉(zhuǎn)存redis緩存采集nginx訪問日志的操作方法

    本文介紹了在服務(wù)器上部署MySQL及如何啟動MySQL服務(wù),并詳細(xì)說明了如何查找安裝軟件的日志文件位置,通過使用rpm命令查詢MySQL服務(wù)的日志文件位置,以及通過編輯Logstash配置文件來添加MySQL日志信息,感興趣的朋友一起看看吧
    2024-11-11
  • Redis 有序集合的使用場景

    Redis 有序集合的使用場景

    在Redis的學(xué)習(xí)中,有序集合是一種非常實用的數(shù)據(jù)結(jié)構(gòu),本文就來介紹一下Redis 有序集合的使用場景,具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • Redis+Caffeine多級緩存數(shù)據(jù)一致性解決方案

    Redis+Caffeine多級緩存數(shù)據(jù)一致性解決方案

    兩級緩存Redis+Caffeine可以解決緩存雪等問題也可以提高接口的性能,但是可能會出現(xiàn)緩存一致性問題,如果數(shù)據(jù)頻繁的變更,可能會導(dǎo)致Redis和Caffeine數(shù)據(jù)不一致的問題,所以本文給大家介紹了Redis+Caffeine多級緩存數(shù)據(jù)一致性解決方案,需要的朋友可以參考下
    2024-12-12
  • 淺談Redis在直播場景的實踐方案

    淺談Redis在直播場景的實踐方案

    這篇文章主要介紹了淺談Redis在直播場景的實踐方案,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-04-04

最新評論