8. Redis 持久化機制介紹

Redis 持久化機制的意義

Redis 如果只是把數(shù)據(jù)放在內(nèi)存中是沒有辦法應(yīng)對一些災(zāi)難性的故障的,比如機房停機籍茧,停電等院水。一旦出現(xiàn)災(zāi)難性故障的時候檬某,就會丟失所有數(shù)據(jù)。

如果通過持久化將數(shù)據(jù)備份到磁盤上去民傻,然后定期同步和備份到一些云存儲服務(wù)上去漓踢,就可以保證不會丟失全部數(shù)據(jù)喧半,還是可以恢復(fù)大部分?jǐn)?shù)據(jù)的挺据。

Redis 持久化的意義就是用來做數(shù)據(jù)備份和故障恢復(fù)的扁耐。

Redis 持久化機制的原理

RDB 和 AOF 兩種持久化機制的介紹

RDB 持久化機制婉称,對 Redis 中的數(shù)據(jù)進(jìn)行周期性的持久化 王暗,RDB 的執(zhí)行步驟

  • Redis 調(diào)用系統(tǒng)函數(shù) fork() 瘫筐,創(chuàng)建一個子進(jìn)程
  • 子進(jìn)程將數(shù)據(jù)集寫入到一個臨時 RDB 文件中
  • 當(dāng)子進(jìn)程完成對臨時 RDB 文件的寫入時策肝,Redis 用新的臨時 RDB 文件* * 替換原來的 RDB 文件之众,并刪除舊 RDB 文件

AOF 持久化機制棺禾,對每條寫入命令作為日志膘婶,以 append-only 的模式寫入一個日志文件中悬襟,在 Redis 重啟的時候脊岳,可以通過回放 AOF 日志中的寫入指令來重新構(gòu)建整個數(shù)據(jù)集。

如果我們想要 Redis 僅僅作為純內(nèi)存的緩存來用奶躯,那么可以禁止 RDB 和 AOF 所有的持久化機制 嘹黔。

通過 RDB 或者 AOF 都可以將 Redis 內(nèi)存中的數(shù)據(jù)持久化到磁盤上,然后將這些持久化數(shù)據(jù)備份到云服務(wù)上浙值,如果 Redis 掛了檩小,本地內(nèi)存和磁盤上的數(shù)據(jù)都丟了规求,可以從云服務(wù)上拉取持久化數(shù)據(jù)阻肿,放到指定的目錄丛塌,然后重新啟動 Redis,Redis 就會根據(jù)持久化文件中的數(shù)據(jù)去恢復(fù)內(nèi)存數(shù)據(jù)啡捶,繼續(xù)對外提供服務(wù)瞎暑。

如果同時使用 RDB 和 AOF 兩種持久化機制了赌,那么在 Redis 重啟的時候揍拆,會使用 AOF 來重新構(gòu)建數(shù)據(jù),因為 AOF 中的數(shù)據(jù)更加完整贮喧。

RDB 和 AOF 兩種持久化機制的介紹

RDB 持久化機制的優(yōu)點

RDB 周期性的生成持久化數(shù)據(jù)文件,非常適合做冷備谓形,可以將這種完整的數(shù)據(jù)文件發(fā)送到一些遠(yuǎn)程的云服務(wù)上去寒跳,以預(yù)定好的備份策略來定期備份 Redis 中的數(shù)據(jù)童太。

RDB 對 Redis 對外提供的讀寫服務(wù)影響非常小书释,可以讓 Redis 保持高性能爆惧,因為 Redis 主進(jìn)程只需要周期性的 fork 一個子進(jìn)程扯再,讓子進(jìn)程執(zhí)行磁盤IO操作來進(jìn)行 RDB 持久化叔收,不會每次都影響 Redis 的讀寫服務(wù)饺律。

相對于 AOF 持久化機制來說复濒,直接基于 RDB 數(shù)據(jù)文件來重啟和恢復(fù) Redis 進(jìn)程巧颈,更加快速砸泛,因為 RDB 存放的就是一份數(shù)據(jù)文件唇礁,而 AOF 存放的是指令日志盏筐,做數(shù)據(jù)恢復(fù)的時候琢融,需要回放和執(zhí)行所有的指令日志漾抬,來恢復(fù)內(nèi)存數(shù)據(jù)奋蔚。

RDB持久化機制的缺點

如果想要在 Redis 故障時泊碑,盡可能少的丟失數(shù)據(jù)馒过,那么 RDB 沒有 AOF 好腹忽。一般來說,RDB 數(shù)據(jù)快照文件葫录,都是每隔5分鐘米同,或者更長時間生成一次面粮,這個時候就得接受一旦 Redis 進(jìn)程宕機熬苍,那么會丟失最近5分鐘的數(shù)據(jù)

RDB 每次在 fork 子進(jìn)程來執(zhí)行 RDB 快照數(shù)據(jù)文件生成的時候,如果數(shù)據(jù)文件特別大似枕,可能會導(dǎo)致對客戶端提供的服務(wù)暫停數(shù)毫秒,或者甚至數(shù)秒

AOF持久化機制的優(yōu)點

AOF 可以更好的保護(hù)數(shù)據(jù)不丟失冗恨,一般 AOF 會每隔1秒掀抹,通過一個后臺線程執(zhí)行一次 fsync 操作傲武,最多丟失1秒鐘的數(shù)據(jù)

AOF 日志文件以 append-only 模式寫入揪利,所以沒有任何磁盤尋址的開銷,寫入性能非常高甜刻,而且文件不容易破損得院,即使文件尾部破損祥绞,也很容易修復(fù)

AOF 重寫的時候就谜,Redis 會開啟一個子線程執(zhí)行丧荐,根據(jù)當(dāng)前的內(nèi)存數(shù)據(jù)創(chuàng)建日志文件弓坞。在創(chuàng)建新日志文件的時候渡冻,老的日志文件還是照常寫入族吻。當(dāng)新的日志文件創(chuàng)建完成超歌,再交換新老日志文件即可巍举。

AOF 日志文件的命令通過非常可讀的方式進(jìn)行記錄炭分,這個特性非常適合做災(zāi)難性的誤刪除的緊急恢復(fù)欠窒。比如某人不小心用flushall 命令清空了所有數(shù)據(jù)岖妄,只要這個時候后臺 rewrite 還沒有發(fā)生荐虐,那么就可以立即拷貝 AOF 文件福扬,將最后一條 flushall 命令給刪了铛碑,然后再將該 AOF 文件放回去汽烦,就可以自動恢復(fù)所有數(shù)據(jù)

AOF持久化機制的缺點

對于同一份數(shù)據(jù)來說俗冻,AOF 日志文件通常比 RDB 數(shù)據(jù)快照文件更大

AOF 開啟后迄薄,支持的寫 QPS 會比 RDB 支持的寫 QPS 低讥蔽,因為 AOF 一般會配置成每秒 fsync 一次日志文件,當(dāng)然,每秒一次 fsync戳护,性能也還是很高的

RDB和AOF到底該如何選擇

不要僅僅使用 RDB,因為那樣會導(dǎo)致你丟失很多數(shù)據(jù)

也不要僅僅使用 AOF铺董,因為那樣有兩個問題精续,第一重付,你通過 AOF 做冷備确垫,沒有 RDB 做冷備來的恢復(fù)速度更快; 第二翔冀,RDB每次簡單粗暴生成數(shù)據(jù)快照纤子,更加健壯,可以避免 AOF 這種復(fù)雜的備份和恢復(fù)機制的 bug

綜合使用 AOF 和 RDB 兩種持久化機制象颖,用 AOF 來保證數(shù)據(jù)不丟失说订,作為數(shù)據(jù)恢復(fù)的第一選擇;用 RDB 來做冷備潮瓶,在 AOF 文件都丟失或損壞不可用的時候陶冷,還可以使用 RDB 來進(jìn)行快速的數(shù)據(jù)恢復(fù)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市毯辅,隨后出現(xiàn)的幾起案子埂伦,更是在濱河造成了極大的恐慌,老刑警劉巖沾谜,帶你破解...
    沈念sama閱讀 211,561評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異胀莹,居然都是意外死亡基跑,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,218評論 3 385
  • 文/潘曉璐 我一進(jìn)店門描焰,熙熙樓的掌柜王于貴愁眉苦臉地迎上來媳否,“玉大人,你說我怎么就攤上這事±榻撸” “怎么了力图?”我有些...
    開封第一講書人閱讀 157,162評論 0 348
  • 文/不壞的土叔 我叫張陵,是天一觀的道長室抽。 經(jīng)常有香客問我搪哪,道長,這世上最難降的妖魔是什么坪圾? 我笑而不...
    開封第一講書人閱讀 56,470評論 1 283
  • 正文 為了忘掉前任晓折,我火速辦了婚禮,結(jié)果婚禮上兽泄,老公的妹妹穿的比我還像新娘漓概。我一直安慰自己,他們只是感情好病梢,可當(dāng)我...
    茶點故事閱讀 65,550評論 6 385
  • 文/花漫 我一把揭開白布胃珍。 她就那樣靜靜地躺著,像睡著了一般蜓陌。 火紅的嫁衣襯著肌膚如雪觅彰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,806評論 1 290
  • 那天钮热,我揣著相機與錄音填抬,去河邊找鬼。 笑死隧期,一個胖子當(dāng)著我的面吹牛飒责,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播仆潮,決...
    沈念sama閱讀 38,951評論 3 407
  • 文/蒼蘭香墨 我猛地睜開眼宏蛉,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了性置?” 一聲冷哼從身側(cè)響起拾并,我...
    開封第一講書人閱讀 37,712評論 0 266
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎鹏浅,沒想到半個月后辟灰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 44,166評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡篡石,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,510評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了西采。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片凰萨。...
    茶點故事閱讀 38,643評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出胖眷,到底是詐尸還是另有隱情武通,我是刑警寧澤,帶...
    沈念sama閱讀 34,306評論 4 330
  • 正文 年R本政府宣布珊搀,位于F島的核電站冶忱,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏境析。R本人自食惡果不足惜囚枪,卻給世界環(huán)境...
    茶點故事閱讀 39,930評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望劳淆。 院中可真熱鬧链沼,春花似錦、人聲如沸沛鸵。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,745評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽曲掰。三九已至疾捍,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間栏妖,已是汗流浹背乱豆。 一陣腳步聲響...
    開封第一講書人閱讀 31,983評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留底哥,地道東北人咙鞍。 一個月前我還...
    沈念sama閱讀 46,351評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像趾徽,于是被迫代替她去往敵國和親续滋。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,509評論 2 348

推薦閱讀更多精彩內(nèi)容