Redis 兩種持久化方式 RDB 和 AOF 的區(qū)別

二者的區(qū)別

RDB 持久化是指在指定的時間間隔內將內存中的數據集快照寫入磁盤拾因,實際操作過程是 fork 一個子進程浇辜,先將數據集寫入臨時文件刘急,寫入成功后,再替換之前的文件,用二進制壓縮存儲

AOF 持久化以日志的形式記錄服務器所處理的每一個增刪改操作扳肛,以文本的方式記錄傻挂,可以打開文件看到詳細的操作記錄

二者優(yōu)缺點

RDB 優(yōu)勢

  1. RDB 會生成多個數據文件,每個數據文件都代表了某一個時刻中 Redis 的數據挖息,這種多個數據文件的方式金拒。比如,可能打算每個小時歸檔一次最近 24 小時的數據套腹,同時還要每天歸檔一次最近 30 天的數據绪抛。通過這樣的備份策略,一旦系統出現災難性故障电禀,可以非常容易的進行恢復幢码。同時,可以將這種完整的數據文件壓縮后發(fā)送到一些遠程的安全存儲上去尖飞。適合做冷備

  2. 直接基于 RDB 數據文件來重啟和恢復 Redis 進程症副,恢復效率會更高

  3. RDB 對 Redis 對外提供的讀寫服務,影響非常小政基,可以讓 Redis 保持高性能瓦糕,因為 Redis 主進程只需要 fork 一個子進程,讓子進程執(zhí)行磁盤 IO 操作來進行 RDB 持久化

RDB 劣勢

  1. 如果想保證數據的高可用性腋么,即最大限度的避免數據丟失,那么 RDB 將不是一個很好的選擇亥揖。因為系統一旦在定時持久化之前出現宕機現象珊擂,此前沒有來得及寫入磁盤的數據都將丟失

  2. 由于 RDB 是通過 fork 子進程來協助完成數據持久化工作的,因此费变,如果當數據集較大時摧扇,可能會導致整個服務器停止服務幾百毫秒,甚至是 1 秒鐘
    一般不要讓 RDB 的間隔太長挚歧,否則每次生成的 RDB 文件太大了扛稽,對 Redis 本身的性能也會有影響

AOF 優(yōu)勢

  1. 該機制可以帶來更高的數據安全性。Redis 提供了 3 種同步策略:每秒同步滑负、每修改同步和不同步在张。事實上,每秒同步也是異步完成的矮慕,其效率也是非常高的帮匾,所差的是一旦系統出現宕機現象,那么這一秒鐘之內修改的數據將會丟失痴鳄。而每修改同步瘟斜,我們可以將其視為同步持久化,即每次發(fā)生的數據變化都會被立即記錄到磁盤中÷菥洌可以預見虽惭,這種方式在效率上是最低的。至于無同步蛇尚,無需多言

  2. 由于該機制對日志文件的寫入操作采用的是 append 模式芽唇,因此在寫入過程中即使出現宕機現象,也不會破壞日志文件中已經存在的內容佣蓉。然而如果本次操作只是寫入了一半數據就出現了系統崩潰問題披摄,在 Redis 下一次啟動之前,可以通過 redis-check-aof 工具來幫助解決數據一致性的問題

  3. 如果日志過大勇凭,Redis 可以自動啟用 rewrite 機制(后臺重寫疚膊,不影響客戶端的讀寫)。即 Redis 以 append 模式不斷的將修改數據寫入到老的磁盤文件中虾标,同時 Redis 還會創(chuàng)建一個新的文件用于記錄此期間有哪些修改命令被執(zhí)行寓盗。因此在進行 rewrite 切換時可以更好的保證數據安全性

  4. AOF 日志文件的命令通過非常可讀的方式進行記錄璧函,這個特性非常適合做災難性的誤刪除的緊急恢復傀蚌。比如某人不小心用 flushall 命令清空了所有數據,只要這個時候后臺 rewrite 還沒有發(fā)生蘸吓,那么就可以立即拷貝 AOF 文件善炫,將最后一條 flushall 命令給刪了,然后再將該 AOF 文件放回去库继,就可以通過恢復機制箩艺,自動恢復所有數據

AOF 劣勢

  1. 對于同一份數據來說,AOF 日志文件通常比 RDB 數據快照文件更宪萄,靠重寫來彌補

  2. AOF 開啟后艺谆,支持的寫 QPS 會比 RDB 支持的寫 QPS 低,因為要將命令寫到 AOF 緩沖區(qū)拜英。此外静汤,還要定時 fsync 一次日志文件

  3. 通過回放 AOF 日志中的寫入指令來重新構建整個數據集,數據恢復速度比較慢

  4. 定期的備份需要自己手寫腳本去做居凶,做冷備不太合適

  5. 以前 AOF 發(fā)生過 bug虫给,就是通過 AOF 記錄的日志,進行數據恢復的時候侠碧,沒有恢復一模一樣的數據出來狰右。所以,類似 AOF 這種較為復雜的基于命令日志回放的方式舆床,比基于 RDB 每次持久化一份完整的數據快照文件的方式棋蚌,更加脆弱一些嫁佳,容易有 bug。不過 AOF 就是為了避免 rewrite 過程導致的 bug谷暮,因此每次 rewrite 并不是基于舊的指令日志進行 merge 的蒿往,而是基于當時內存中的數據進行指令的重新構建,這樣健壯性會好很多

二者選擇的標準

  1. 不要僅僅使用 RDB湿弦,因為那樣會導致丟失數據
  2. 也不要僅僅使用 AOF瓤漏,因為那樣有兩個問題,第一颊埃,通過 AOF 做冷備蔬充,沒有 RDB 做冷備,恢復速度快班利;第二饥漫,RDB 每次簡單粗暴生成數據快照,更加健壯罗标,可以避免 AOF 這種復雜的備份和恢復機制的 bug
  3. 綜合使用 AOF 和 RDB 兩種持久化機制庸队,用 AOF 來保證數據不丟失,作為數據恢復的第一選擇闯割;用 RDB 來做不同程度的冷備彻消,在 AOF 文件都丟失或損壞不可用的時候,還可以使用 RDB 來進行快速的數據恢復
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末宙拉,一起剝皮案震驚了整個濱河市宾尚,隨后出現的幾起案子,更是在濱河造成了極大的恐慌谢澈,老刑警劉巖煌贴,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現場離奇詭異澳化,居然都是意外死亡,警方通過查閱死者的電腦和手機稳吮,發(fā)現死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門缎谷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人灶似,你說我怎么就攤上這事列林。” “怎么了酪惭?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵希痴,是天一觀的道長。 經常有香客問我春感,道長砌创,這世上最難降的妖魔是什么虏缸? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嫩实,結果婚禮上刽辙,老公的妹妹穿的比我還像新娘。我一直安慰自己甲献,他們只是感情好宰缤,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晃洒,像睡著了一般慨灭。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上球及,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天氧骤,我揣著相機與錄音,去河邊找鬼桶略。 笑死语淘,一個胖子當著我的面吹牛,可吹牛的內容都是我干的际歼。 我是一名探鬼主播惶翻,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼鹅心!你這毒婦竟也來了吕粗?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤旭愧,失蹤者是張志新(化名)和其女友劉穎颅筋,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體输枯,經...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡议泵,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了桃熄。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片先口。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖瞳收,靈堂內的尸體忽然破棺而出碉京,到底是詐尸還是另有隱情,我是刑警寧澤螟深,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布谐宙,位于F島的核電站,受9級特大地震影響界弧,放射性物質發(fā)生泄漏凡蜻。R本人自食惡果不足惜搭综,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望咽瓷。 院中可真熱鬧设凹,春花似錦、人聲如沸茅姜。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽钻洒。三九已至奋姿,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間素标,已是汗流浹背称诗。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留头遭,地道東北人寓免。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像计维,于是被迫代替她去往敵國和親袜香。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內容

  • 從這篇文章開始鲫惶,將依次介紹Redis高可用相關的知識——持久化蜈首、復制(及讀寫分離)、哨兵欠母、以及集群欢策。 本文將先說明...
    不變甄心閱讀 692評論 0 4
  • 前言 在上一篇文章中,介紹了Redis內存模型赏淌,從這篇文章開始踩寇,將依次介紹Redis高可用相關的知識——持久化、復...
    Java架構閱讀 2,296評論 3 21
  • 一六水、Redis高可用概述 在介紹Redis高可用之前俺孙,先說明一下在Redis的語境中高可用的含義。 我們知道缩擂,在w...
    空語閱讀 1,593評論 0 2
  • 在當今的社會上鼠冕,一旦臉上出現色斑問題就注定會被人嘲笑添寺,會注定受到一些不公平的待遇胯盯,那么臉上長斑怎么辦呢呢?而...
    還在哦閱讀 244評論 0 0
  • 止于至善,說的就是按良知的指引做事 知道要止于至善的道理计露,然后自己的志向才得以確定博脑;志向確定憎乙,然后身心才能安靜;身...
    flyAfish3閱讀 378評論 0 0