Redis學(xué)習(xí)之持久化

Redis學(xué)習(xí)之持久化

前言

在前面我們學(xué)習(xí)了Redis的基本操作防泵,也學(xué)習(xí)了Redis的Java客戶端Jedis的使用窟勃,接下來我們來學(xué)習(xí)Redis的持久化春霍。

在前面的學(xué)習(xí)中斗搞,我們知道Redis是基于內(nèi)存的鍵值對數(shù)據(jù)庫指攒,眾所周知,基于內(nèi)存的數(shù)據(jù)會在內(nèi)存斷電之后丟失僻焚,所以允悦,如果Redis中沒有持久化機(jī)制,那么虑啤,當(dāng)Redis服務(wù)器重啟之后隙弛,存儲的數(shù)據(jù)就丟失了,這顯示是不能接受的狞山,所幸全闷,Redis有持久化機(jī)制,本小節(jié)我們就來學(xué)習(xí)這部分的內(nèi)容萍启。

持久化

Redis支持兩種不同的持久化方式室埋,RDB以及AOF,RDB會定時將內(nèi)存中的數(shù)據(jù)存儲在硬盤上伊约,而AOF則是每次將命令記錄下來姚淆,Redis中這兩種方式可以單獨使用,也可以混合使用屡律。

RDB方式

RDB持久化是通過快照的方式完成的腌逢,當(dāng)符合一定條件時,Redis會自動將內(nèi)存中的所有數(shù)據(jù)生成一份副本并存儲在硬盤上

觸發(fā)條件

  • 根據(jù)配置規(guī)則進(jìn)行自動快照
  • 用戶執(zhí)行save或者bgsave命令
  • 執(zhí)行flushall命令
  • 執(zhí)行復(fù)制時

配置規(guī)則

配置規(guī)則配置在Redis的配置文件中超埋,save命令后面跟一個時間窗口大小以及該時間內(nèi)被修改的鍵的個數(shù)搏讶,舉例如下

 save 900 1  # 900秒內(nèi)至少一個鍵被修改
 save 300 10 # 300秒內(nèi)至少十個鍵被修改
 save 60 10000 # 60秒內(nèi)至少10000個鍵被修改

多個規(guī)則之間是或的關(guān)系佳鳖,也就是只要其中一個條件滿足,則觸發(fā)RDB持久化

save/bgsave命令

save命令是前臺操作媒惕,命令執(zhí)行后Redis會阻塞所有的客戶端請求系吩,在生產(chǎn)環(huán)境中不建議使用

bgsave執(zhí)行之后,Redis會在后臺執(zhí)行快照操作(異步)妒蔚,快照的同時服務(wù)器可以繼續(xù)響應(yīng)客戶端請求

flushall命令

執(zhí)行flushall時穿挨,Redis會清除數(shù)據(jù)庫中所有數(shù)據(jù),無論清空數(shù)據(jù)庫的過程是否滿足觸發(fā)條件肴盏,只要自動快照條件不為空科盛,則會進(jìn)行快照操作

快照原理

Redis默認(rèn)將快照文件存儲在當(dāng)前進(jìn)程工作目錄下的dump.rdb文件中,可以通過配置dbfilename FILENAME來指定文件的名稱菜皂,通過dir PATH來指定工作的目錄

快照過程

  1. Reids使用fork系統(tǒng)調(diào)用產(chǎn)生子進(jìn)程
  2. 父進(jìn)程繼續(xù)處理請求贞绵,子進(jìn)程開始將內(nèi)存中的數(shù)據(jù)寫入臨時文件
  3. 當(dāng)子進(jìn)程完成所有數(shù)據(jù)的寫入操作后,將該臨時文件替換舊的RDB文件恍飘,完成快照操作

由于fork操作采用的是寫時復(fù)制策略榨崩,所以,如果父進(jìn)程沒有進(jìn)行操作章母,子進(jìn)程與父進(jìn)程共享同份內(nèi)存母蛛,如果父進(jìn)程發(fā)生寫入操作,則子進(jìn)程會復(fù)制一份父進(jìn)程的內(nèi)存空間胳施,所以溯祸,快照的內(nèi)容其實只是fork時刻的內(nèi)存,而不是實時的數(shù)據(jù)舞肆。

RDB文件是經(jīng)過壓縮的焦辅,可以通過配置rdbcompression yes/no來決定是否啟動壓縮功能,啟動壓縮功能會消耗多一點CPU資源椿胯,但減少文件的大小筷登。

Redis啟動后會自動讀取RDB文件,并將數(shù)據(jù)從硬盤載入到內(nèi)存中哩盲。

AOF方式

AOF是將每條命令追加到硬盤中前方,可以通過appendonly yes/no來啟用,通過appendfilename FILENAME來設(shè)置AOF文件的名稱廉油,存儲位置也是dir指定的目錄之下惠险。

默認(rèn)情況下AOF會記錄所有的操作,當(dāng)命令重復(fù)比較大的情況下抒线,會比較消耗空間班巩,所以,Redis提供了重寫AOF的功能嘶炭,可以通過auto-aof-rewrite-percentage PERCENT抱慌、auto-aof-rewrite-min-size SIZE來配置自動重寫的觸發(fā)條件

auto-aof-rewrite-percentage表示當(dāng)前的AOF文件的大小超過上一次重寫時AOF文件大小的百分比時會自動重寫逊桦,如果之前沒有重寫過,則以啟動時的AOF文件大小為基準(zhǔn)抑进。

auto-aof-rewrite-min-size表示允許重寫的最小AOF文件大小

可以通過bgrewriteaof來手動觸發(fā)重寫

由于OS本身會對寫入磁盤的數(shù)據(jù)做緩存强经,所以雖然AOF是將每條命令寫入到磁盤中,但是實際上并不會實時刷新到硬盤中寺渗,所以匿情,如果需要實時寫入,需要配置如下內(nèi)容

 #appendfsync always #每次寫入户秤,會對性能有影響
 appendfsync everysec # 每秒寫入
 # appendfsync no # 由OS來決定寫入時間

如果同時開啟AOF和RDB码秉,Redis會在重啟之后使用AOF來恢復(fù)數(shù)據(jù)逮矛,畢竟AOF丟失的數(shù)據(jù)量比較少

總結(jié)

本小節(jié)我們主要學(xué)習(xí)了Redis的兩種持久化方式鸡号,RDB和AOF,RDB是根據(jù)觸發(fā)條件對內(nèi)存的數(shù)據(jù)執(zhí)行一次快照操作须鼎,AOF則是將每次操作的命令記錄下來鲸伴。兩種方式中,Redis默認(rèn)啟用的是RDB方式晋控,AOF則需要我們手動開啟汞窗,相比于RDB,AOF能保存的數(shù)據(jù)更加完整赡译,所以如果兩者都啟用仲吏,Redis重啟的時候,以AOF為基準(zhǔn)進(jìn)行數(shù)據(jù)的恢復(fù)蝌焚。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末裹唆,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子只洒,更是在濱河造成了極大的恐慌许帐,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,839評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件毕谴,死亡現(xiàn)場離奇詭異成畦,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)涝开,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,543評論 2 382
  • 文/潘曉璐 我一進(jìn)店門循帐,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人舀武,你說我怎么就攤上這事拄养。” “怎么了奕剃?”我有些...
    開封第一講書人閱讀 153,116評論 0 344
  • 文/不壞的土叔 我叫張陵衷旅,是天一觀的道長捐腿。 經(jīng)常有香客問我,道長柿顶,這世上最難降的妖魔是什么茄袖? 我笑而不...
    開封第一講書人閱讀 55,371評論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮嘁锯,結(jié)果婚禮上宪祥,老公的妹妹穿的比我還像新娘。我一直安慰自己家乘,他們只是感情好蝗羊,可當(dāng)我...
    茶點故事閱讀 64,384評論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著仁锯,像睡著了一般耀找。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上业崖,一...
    開封第一講書人閱讀 49,111評論 1 285
  • 那天野芒,我揣著相機(jī)與錄音,去河邊找鬼双炕。 笑死狞悲,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的妇斤。 我是一名探鬼主播摇锋,決...
    沈念sama閱讀 38,416評論 3 400
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼站超!你這毒婦竟也來了荸恕?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,053評論 0 259
  • 序言:老撾萬榮一對情侶失蹤顷编,失蹤者是張志新(化名)和其女友劉穎戚炫,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體媳纬,經(jīng)...
    沈念sama閱讀 43,558評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡双肤,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,007評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了钮惠。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片茅糜。...
    茶點故事閱讀 38,117評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖素挽,靈堂內(nèi)的尸體忽然破棺而出蔑赘,到底是詐尸還是另有隱情,我是刑警寧澤,帶...
    沈念sama閱讀 33,756評論 4 324
  • 正文 年R本政府宣布缩赛,位于F島的核電站耙箍,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏酥馍。R本人自食惡果不足惜辩昆,卻給世界環(huán)境...
    茶點故事閱讀 39,324評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望旨袒。 院中可真熱鬧汁针,春花似錦、人聲如沸砚尽。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,315評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽必孤。三九已至猾骡,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間隧魄,已是汗流浹背卓练。 一陣腳步聲響...
    開封第一講書人閱讀 31,539評論 1 262
  • 我被黑心中介騙來泰國打工隘蝎, 沒想到剛下飛機(jī)就差點兒被人妖公主榨干…… 1. 我叫王不留购啄,地道東北人。 一個月前我還...
    沈念sama閱讀 45,578評論 2 355
  • 正文 我出身青樓嘱么,卻偏偏與公主長得像狮含,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子曼振,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 42,877評論 2 345

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

  • 從這篇文章開始几迄,將依次介紹Redis高可用相關(guān)的知識——持久化、復(fù)制(及讀寫分離)冰评、哨兵映胁、以及集群。 本文將先說明...
    不變甄心閱讀 692評論 0 4
  • 前言 在上一篇文章中甲雅,介紹了Redis內(nèi)存模型解孙,從這篇文章開始,將依次介紹Redis高可用相關(guān)的知識——持久化抛人、復(fù)...
    Java架構(gòu)閱讀 2,296評論 3 21
  • 企業(yè)級redis集群架構(gòu)的特點 海量數(shù)據(jù) 高并發(fā) 高可用 要達(dá)到高可用弛姜,持久化是不可減少的,持久化主要是做災(zāi)難恢復(fù)...
    lucode閱讀 2,193評論 0 7
  • 看完這部影片妖枚,感觸挺多的廷臼。夜深,先寫下一些片段。 金錢面前荠商,人該何去何從寂恬? 當(dāng)程勇放錢在桌子上讓老板去跳舞的時候,...
    Sarah臘梅閱讀 213評論 0 1
  • 一.《琉璃瓦》中比較喜歡的比喻句 1)三朝回門莱没,卑卑褪下了青狐大衣掠剑,里面穿著泥金緞短袖旗袍。人像金瓶里的一朵梔子花...
    媚眼模糊閱讀 140評論 4 1