Redis--持久性方式

2018-10-23

RDB持久性以指定的時(shí)間間隔執(zhí)行數(shù)據(jù)集的時(shí)間點(diǎn)快照
AOF持久性會(huì)記錄服務(wù)器執(zhí)行的每個(gè)寫入操作款青,這些操作將在服務(wù)器啟動(dòng)時(shí)通過執(zhí)行這些命令來還原數(shù)據(jù)集
redis還可以同時(shí)使用AOF和RDB做修。這種情況下,重啟時(shí)優(yōu)先使用AOF文件來還原數(shù)據(jù)集抡草,因?yàn)橥ǔOF數(shù)據(jù)集比RDB更完整
也可以關(guān)閉持久化功能饰及,讓數(shù)據(jù)只在服務(wù)器運(yùn)行時(shí)存在

RDB:

優(yōu)點(diǎn):
RDB是一個(gè)非常緊湊(compact)的文件,它保存了redis在某個(gè)時(shí)間點(diǎn)上的數(shù)據(jù)集康震。這種文件非常適用于進(jìn)行備份

RDB非常適用于災(zāi)難恢復(fù)(disaster recovery):它只有一個(gè)文件燎含,并且內(nèi)容非常緊湊,可以(在加密后)將它傳送到別的數(shù)據(jù)中心

RDB 可以最大化 Redis 的性能:父進(jìn)程在保存 RDB 文件時(shí)唯一要做的就是fork出一個(gè)子進(jìn)程腿短,然后這個(gè)子進(jìn)程就會(huì)處理接下來的所有保存工作屏箍,父進(jìn)程無須執(zhí)行任何磁盤 I/O 操作。

RDB 在恢復(fù)大數(shù)據(jù)集時(shí)的速度比 AOF 的恢復(fù)速度要快橘忱。

缺點(diǎn):
如果你需要盡量避免在服務(wù)器故障時(shí)丟失數(shù)據(jù)腰吟,那么 RDB 不適合你飞崖。 雖然 Redis 允許你設(shè)置不同的保存點(diǎn)(save point)來控制保存 RDB 文件的頻率堤器, 但是银酬, 因?yàn)镽DB 文件需要保存整個(gè)數(shù)據(jù)集的狀態(tài), 所以它并不是一個(gè)輕松的操作凝颇。 因此你可能會(huì)至少 5 分鐘才保存一次 RDB 文件潘拱。 在這種情況下, 一旦發(fā)生故障停機(jī)拧略, 你就可能會(huì)丟失好幾分鐘的數(shù)據(jù)芦岂。

每次保存RDB的時(shí)候,Redis都要fork()出一個(gè)子進(jìn)程辑鲤,并由子進(jìn)程來進(jìn)行實(shí)際的持久化工作盔腔。在數(shù)據(jù)集比較龐大時(shí),fork()可能會(huì)非常耗時(shí)月褥,造成服務(wù)器在某某毫秒內(nèi)停止處理客戶端; 如果數(shù)據(jù)集非常巨大弛随,并且CPU時(shí)間非常緊張的話,那么這種停止時(shí)間甚至可能會(huì)長達(dá)整整一秒宁赤。 雖然AOF重寫也需要進(jìn)行fork()舀透,但無論 AOF 重寫的執(zhí)行間隔有多長,數(shù)據(jù)的耐久性都不會(huì)有任何損失决左。

AOF:

優(yōu)點(diǎn):
使用 AOF 持久化會(huì)讓 Redis 變得非常耐久(much more durable):你可以設(shè)置不同的 fsync 策略愕够,比如無 fsync 走贪,每秒鐘一次 fsync ,或者每次執(zhí)行寫入命令時(shí) fsync 惑芭。 AOF 的默認(rèn)策略為每秒鐘 fsync 一次坠狡,在這種配置下,Redis 仍然可以保持良好的性能遂跟,并且就算發(fā)生故障停機(jī)逃沿,也最多只會(huì)丟失一秒鐘的數(shù)據(jù)(fsync會(huì)在后臺(tái)線程執(zhí)行,所以主線程可以繼續(xù)努力地處理命令請(qǐng)求)幻锁。

AOF 文件是一個(gè)只進(jìn)行追加操作的日志文件(append only log)凯亮, 因此對(duì)AOF文件的寫入不需要進(jìn)行seek,即使日志因?yàn)槟承┰蚨宋磳懭胪暾拿?比如寫入時(shí)磁盤已滿哄尔,寫入中途停機(jī)假消,等等),redis-check-aof工具也可以輕易地修復(fù)這種問題岭接。

Redis 可以在 AOF 文件體積變得過大時(shí)富拗,自動(dòng)地在后臺(tái)對(duì) AOF 進(jìn)行重寫:重寫后的新AOF文件包含了恢復(fù)當(dāng)前數(shù)據(jù)集所需的最小命令集合。整個(gè)重寫操作是絕對(duì)安全的亿傅,因?yàn)镽edis在創(chuàng)建新AOF文件的過程中媒峡,會(huì)繼續(xù)將命令追加到現(xiàn)有的AOF文件里面瘟栖,即使重寫過程中發(fā)生停機(jī)葵擎,現(xiàn)有的AOF文件也不會(huì)丟失。 而一旦新 AOF 文件創(chuàng)建完畢半哟,Redis 就會(huì)從舊 AOF 文件切換到新 AOF 文件酬滤,并開始對(duì)新 AOF 文件進(jìn)行追加操作。

AOF 文件有序地保存了對(duì)數(shù)據(jù)庫執(zhí)行的所有寫入操作寓涨, 這些寫入操作以 Redis 協(xié)議的格式保存盯串, 因此 AOF 文件的內(nèi)容非常容易被人讀懂, 對(duì)文件進(jìn)行分析(parse)也很輕松戒良。 導(dǎo)出(export) AOF 文件也非常簡單: 舉個(gè)例子体捏, 如果你不小心執(zhí)行了 FLUSHALL 命令, 但只要 AOF 文件未被重寫糯崎, 那么只要停止服務(wù)器几缭, 移除 AOF 文件末尾的 FLUSHALL 命令, 并重啟 Redis 沃呢, 就可以將數(shù)據(jù)集恢復(fù)到 FLUSHALL 執(zhí)行之前的狀態(tài)年栓。

缺點(diǎn):
對(duì)于相同的數(shù)據(jù)集來說,AOF 文件的體積通常要大于 RDB 文件的體積薄霜。

根據(jù)所使用的 fsync 策略某抓,AOF 的速度可能會(huì)慢于 RDB 纸兔。 在一般情況下, 每秒 fsync 的性能依然非常高否副, 而關(guān)閉 fsync 可以讓 AOF 的速度和 RDB 一樣快汉矿, 即使在高負(fù)荷之下也是如此。 不過在處理巨大的寫入載入時(shí)备禀,RDB 可以提供更有保證的最大延遲時(shí)間(latency)负甸。

AOF 在過去曾經(jīng)發(fā)生過這樣的 bug : 因?yàn)閭€(gè)別命令的原因,導(dǎo)致 AOF 文件在重新載入時(shí)痹届,無法將數(shù)據(jù)集恢復(fù)成保存時(shí)的原樣呻待。 (舉個(gè)例子,阻塞命令 BRPOPLPUSH 就曾經(jīng)引起過這樣的 bug 队腐。) 測試套件里為這種情況添加了測試: 它們會(huì)自動(dòng)生成隨機(jī)的蚕捉、復(fù)雜的數(shù)據(jù)集, 并通過重新載入這些數(shù)據(jù)來確保一切正常柴淘。 雖然這種 bug 在 AOF 文件中并不常見迫淹, 但是對(duì)比來說, RDB 幾乎是不可能出現(xiàn)這種 bug 的为严。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末敛熬,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子第股,更是在濱河造成了極大的恐慌应民,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,997評(píng)論 6 502
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件夕吻,死亡現(xiàn)場離奇詭異诲锹,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涉馅,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,603評(píng)論 3 392
  • 文/潘曉璐 我一進(jìn)店門归园,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人稚矿,你說我怎么就攤上這事庸诱。” “怎么了晤揣?”我有些...
    開封第一講書人閱讀 163,359評(píng)論 0 353
  • 文/不壞的土叔 我叫張陵桥爽,是天一觀的道長。 經(jīng)常有香客問我碉渡,道長聚谁,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,309評(píng)論 1 292
  • 正文 為了忘掉前任滞诺,我火速辦了婚禮形导,結(jié)果婚禮上环疼,老公的妹妹穿的比我還像新娘。我一直安慰自己朵耕,他們只是感情好炫隶,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,346評(píng)論 6 390
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著阎曹,像睡著了一般伪阶。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上处嫌,一...
    開封第一講書人閱讀 51,258評(píng)論 1 300
  • 那天栅贴,我揣著相機(jī)與錄音,去河邊找鬼熏迹。 笑死檐薯,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的注暗。 我是一名探鬼主播坛缕,決...
    沈念sama閱讀 40,122評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼捆昏!你這毒婦竟也來了赚楚?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 38,970評(píng)論 0 275
  • 序言:老撾萬榮一對(duì)情侶失蹤骗卜,失蹤者是張志新(化名)和其女友劉穎宠页,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膨俐,經(jīng)...
    沈念sama閱讀 45,403評(píng)論 1 313
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡勇皇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,596評(píng)論 3 334
  • 正文 我和宋清朗相戀三年罩句,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了焚刺。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,769評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡门烂,死狀恐怖乳愉,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情屯远,我是刑警寧澤蔓姚,帶...
    沈念sama閱讀 35,464評(píng)論 5 344
  • 正文 年R本政府宣布,位于F島的核電站慨丐,受9級(jí)特大地震影響坡脐,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜房揭,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,075評(píng)論 3 327
  • 文/蒙蒙 一备闲、第九天 我趴在偏房一處隱蔽的房頂上張望晌端。 院中可真熱鬧,春花似錦恬砂、人聲如沸咧纠。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,705評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽漆羔。三九已至,卻和暖如春狱掂,著一層夾襖步出監(jiān)牢的瞬間演痒,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 32,848評(píng)論 1 269
  • 我被黑心中介騙來泰國打工趋惨, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留嫡霞,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 47,831評(píng)論 2 370
  • 正文 我出身青樓希柿,卻偏偏與公主長得像诊沪,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子曾撤,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,678評(píng)論 2 354

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

  • 從這篇文章開始端姚,將依次介紹Redis高可用相關(guān)的知識(shí)——持久化、復(fù)制(及讀寫分離)挤悉、哨兵渐裸、以及集群。 本文將先說明...
    不變甄心閱讀 693評(píng)論 0 4
  • 前言 在上一篇文章中装悲,介紹了Redis內(nèi)存模型昏鹃,從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識(shí)——持久化诀诊、復(fù)...
    Java架構(gòu)閱讀 2,314評(píng)論 3 21
  • 企業(yè)級(jí)redis集群架構(gòu)的特點(diǎn) 海量數(shù)據(jù) 高并發(fā) 高可用 要達(dá)到高可用洞渤,持久化是不可減少的,持久化主要是做災(zāi)難恢復(fù)...
    lucode閱讀 2,206評(píng)論 0 7
  • 高考結(jié)束,網(wǎng)絡(luò)上被“寒門難出貴子”的文章和言論霸屏抡蛙,大肆宣揚(yáng)貧富差距的固化性护昧。不可否認(rèn),大部分人運(yùn)氣都不太好粗截,沒有...
    小羊快跑_29c9閱讀 136評(píng)論 0 1
  • 以什么樣的方式和對(duì)手競爭惋耙?(一) (生意經(jīng))以什么樣的方式和對(duì)手競爭? (一)打敗你沒商量 文/賈宋海納百川 在這...
    賈宋海納百川閱讀 793評(píng)論 4 7