Redis基礎(chǔ)知識(shí)3-持久化

  • 注意: 撰寫本文目的主要是為了給自己做一個(gè)備忘錄邻寿,如果你學(xué)過Redis并且希望從本文中找到一些忘記的知識(shí)點(diǎn),那么你可以閱讀本文章视哑。由于文章內(nèi)講解并不是很多绣否,因此此文章并不適合小白入門使用。

1.Redis簡(jiǎn)介

  • 官網(wǎng)介紹:
    在指定的時(shí)間間隔內(nèi)將內(nèi)存中的數(shù)據(jù)集快照寫入磁盤挡毅,也就是行話講的Snapshot快照蒜撮,它恢復(fù)時(shí)是將快照文件直接讀到內(nèi)存里。
  • Redis是什么:
    Redis會(huì)單獨(dú)創(chuàng)建(fork)一個(gè)子進(jìn)程來(lái)進(jìn)行持久化跪呈,會(huì)先將數(shù)據(jù)寫入到一個(gè)臨時(shí)文件中段磨,待持久化過程都結(jié)束了,再用這個(gè)臨時(shí)文件替換上次持久化好的文件庆械。整個(gè)過程中薇溃,主進(jìn)程是不進(jìn)行任何IO操作的,這就確保了極高的性能缭乘。如果需要進(jìn)行大規(guī)模數(shù)據(jù)的恢復(fù)沐序,且對(duì)于數(shù)據(jù)恢復(fù)的完整性不是很敏感,那RDB方式要比AOP方式更加的高效堕绩。RDB的缺點(diǎn)是最后一次持久化后的數(shù)據(jù)可能丟失策幼。
  • Fork:
    Fork的作用是復(fù)制一個(gè)與當(dāng)前進(jìn)程一樣的進(jìn)程。新進(jìn)程的所有數(shù)據(jù)(變量奴紧、環(huán)境變量特姐、程序計(jì)數(shù)器)數(shù)值都和原進(jìn)程一致,但是是一個(gè)全新的進(jìn)程黍氮,并作為原進(jìn)程的子進(jìn)程唐含。

2.RDB(Redis DataBase)

RDB存儲(chǔ):

  • RDBRedis會(huì)將數(shù)據(jù)存儲(chǔ)在dump.rdb文件中浅浮。
  • 如果使用shutdown或者系統(tǒng)突然崩潰或關(guān)機(jī)使得Redis突然停止工作時(shí),Redis會(huì)將此時(shí)表中的數(shù)據(jù)保存至dump.rdb文件中捷枯,執(zhí)行一次save操作滚秩。
  • 當(dāng)滿足save條件時(shí)(規(guī)定時(shí)間內(nèi)操作了指定次數(shù):插入、刪除淮捆、更新郁油,不包括get),Redis會(huì)將表中的數(shù)據(jù)保存至dump.rdb文件中攀痊,也會(huì)執(zhí)行save操作桐腌。save操作執(zhí)行條件如下(save 秒鐘 寫操作次數(shù)):
    isave執(zhí)行條件

Redis.conf中Snapshot相關(guān)配置:

Redis.conf中Snapshot相關(guān)配置

  • 直接輸入save可以立即執(zhí)行備份。

禁用:

  • 如果想禁用RDB持久化策略苟径,只要不設(shè)置任何save指令案站,或者給save傳入一個(gè)空字符串也可以

Stop-writes-on-bgsave-error

Stop-writes-on-bgsave-error

rdbcompression壓縮

rdbcompression壓縮

如何觸發(fā)RDB快照:

  • 配置文件中默認(rèn)的快照配置。
    冷拷貝直接使用涩笤,可以cp dump.rdb dump_new.rdb
  • 命令save或是bgsave嚼吞。
    1.Save:save時(shí)只管保存盒件,其他不管蹬碧,全部阻塞。
    2.BGSAVE:Redis會(huì)在后臺(tái)異步進(jìn)行快照操作炒刁,快照同時(shí)還可以響應(yīng)客戶端請(qǐng)求恩沽。可以通過lastsave命令獲取最后一次成功執(zhí)行快照的時(shí)間翔始。
  • 執(zhí)行flushall命令罗心,也會(huì)產(chǎn)生dump.rdb文件,但里面是空的城瞎,無(wú)意義渤闷。

如何恢復(fù):

  • 將備份文件(dump.rdb)移動(dòng)到redis安裝目錄并啟動(dòng)服務(wù)即可。
  • CONFIG GET dir獲取目錄脖镀。

優(yōu)勢(shì):

  • 適合大規(guī)模的數(shù)據(jù)恢復(fù)飒箭。
  • 對(duì)數(shù)據(jù)完整性和一致性要求不高。

劣勢(shì):

  • 在一定間隔時(shí)間做一次備份蜒灰,所以如果redis意外down掉的話弦蹂,就會(huì)失去最后一次快照后的所有修改。
  • Fork的時(shí)候强窖,內(nèi)存中的數(shù)據(jù)被克隆了一份凸椿,大致2倍的碰著性需要考慮。

如何停止:

  • 動(dòng)態(tài)所有停止RDB保存規(guī)則的方法:redis-cli config set save ""

3.AOF(Append Only File)

3.1.是什么

  • 以日志的形式來(lái)記錄每個(gè)文件寫操作翅溺,將Redis執(zhí)行過的所有寫指令記錄下來(lái)(讀操作不記錄)脑漫,只許追加文件但不可以改寫文件髓抑,redis啟動(dòng)之初會(huì)讀取該文件重新構(gòu)建數(shù)據(jù),換言之优幸,redis重啟的話就根據(jù)日志文件的內(nèi)容將指令從前到后執(zhí)行一次以完成數(shù)據(jù)的恢復(fù)工作启昧。

3.2.AOF配置文件

AOF配置文件

3.3.注意事項(xiàng)

  • 自動(dòng)生成的aof配置文件最后會(huì)有FLUSHALL指令,即加載完所有的數(shù)據(jù)恢復(fù)工作之后劈伴,會(huì)執(zhí)行FLUSHALL清空指令密末。
  • 若AOF配置中包含非法語(yǔ)句,則Redis-server會(huì)啟動(dòng)失敗跛璧。此時(shí)严里,可以使用redis-check-aof --fix 文件名稱來(lái)排查文件中的錯(cuò)誤。

3.4.配置位置

  • appendonly no:默認(rèn)是no追城,yes就打開aof持久化刹碾。

3.5.APPEND ONLY MODE追加

  • appendonly:
  • appendfilename:
  • Appendfsync:
    1.Always:同步持久化 每次發(fā)生數(shù)據(jù)變更會(huì)被立即記錄到磁盤 性能較差且數(shù)據(jù)完整性比較好。
    2.Everysec:出廠默認(rèn)推薦座柱,異步操作迷帜,每秒紀(jì)錄 如果一秒內(nèi)宕機(jī),有數(shù)據(jù)丟失色洞。
    3.No**
  • No-appendfsync-on-rewrite :重寫時(shí)是否可以運(yùn)用Appendfsync戏锹,用默認(rèn)no即可,保證數(shù)據(jù)安全性火诸。
  • Auto-aof-rewrite-min-size:設(shè)置重寫的基準(zhǔn)值
  • Auto-aof-rewrite-percentage:設(shè)置重寫的基準(zhǔn)值

3.6.AOF啟動(dòng)/修復(fù)/恢復(fù)

  • 正辰跽耄恢復(fù):
    1.啟動(dòng):修改默認(rèn)的appendonly no.,改為yes置蜀。
    2.將所有數(shù)據(jù)的aof文件復(fù)制一份保存到對(duì)應(yīng)目錄(config get dir)
    3.恢復(fù):重啟redis然后重新加載
  • 異衬嗡眩恢復(fù):
    1.啟動(dòng):設(shè)置Yes
    2.備份被寫壞的AOF文件
    3.Redis-check-aof --fix進(jìn)行修復(fù)
    4.重啟redis然后重新加載

3.7.Rewrite

是什么:
AOF采用文件追加方式,文件會(huì)越來(lái)越大盯荤,為避免出現(xiàn)此情況馋吗,新增了重寫機(jī)制,當(dāng)AOF文件的大小超過所有設(shè)定的閾值時(shí)秋秤,Redis就會(huì)啟動(dòng)AOF文件的內(nèi)容壓縮宏粤,只保留可以恢復(fù)數(shù)據(jù)的最小指令集,可以使用命令bgrewriteaof

重寫原理

  • AOF文件持續(xù)增長(zhǎng)而過大時(shí)航缀,會(huì)fork出一條新進(jìn)程來(lái)將文件重寫(也是先寫臨時(shí)文件最后再rename)商架,遍歷新進(jìn)程的內(nèi)存中數(shù)據(jù),每條記錄有一條的Set語(yǔ)句芥玉,重寫aof文件的操作蛇摸,并沒有讀取舊的aof文件,而是將整個(gè)內(nèi)存中的數(shù)據(jù)庫(kù)內(nèi)容用命令的方式重寫了一個(gè)新的aof文件灿巧,這點(diǎn)和快照有點(diǎn)類似赶袄。

觸發(fā)機(jī)制

  • Redis會(huì)記錄上次重寫時(shí)的AOF大小揽涮,默認(rèn)配置是當(dāng)AOF文件大小是上次rewrite后大小的一倍且文件大于64M時(shí)觸發(fā)。

3.8.優(yōu)勢(shì)

  • 每秒同步:appendfsync always 同步持久化 每次發(fā)生數(shù)據(jù)變更會(huì)被立即記錄到磁盤 性能較差且數(shù)據(jù)完整性比較好饿肺。
  • 每修改同步:appendfsync everysec 出廠默認(rèn)推薦蒋困,異步操作,每秒紀(jì)錄 如果一秒內(nèi)宕機(jī)敬辣,有數(shù)據(jù)丟失雪标。
  • 不同步:appendfsync no 從不同步

3.9.劣勢(shì)

  • 相同數(shù)據(jù)集的數(shù)據(jù)而言aof文件要遠(yuǎn)大于rdb文件,恢復(fù)速度慢于rdb
  • Aof運(yùn)行效率要慢于rdn溉跃,每秒同步策略效果較好村刨,不同步效率和rdb相同

3.10.總結(jié)

總結(jié)

性能建議:

性能建議

文集推薦:

Java基礎(chǔ)方法集1
Python基礎(chǔ)知識(shí)完整版
Spring Boot學(xué)習(xí)筆記
Linux指令進(jìn)階
Java高并發(fā)編程
SpringMVC基礎(chǔ)知識(shí)進(jìn)階
Mysql基礎(chǔ)知識(shí)完整版
健康管理系統(tǒng)學(xué)習(xí)花絮(學(xué)習(xí)記錄)
Node.js基礎(chǔ)知識(shí)(隨手筆記)
MongoDB基礎(chǔ)知識(shí)
Dubbo學(xué)習(xí)筆記
Vue學(xué)習(xí)筆記(隨手筆記)

聲明:發(fā)表此文是出于傳遞更多信息之目的。若有來(lái)源標(biāo)注錯(cuò)誤或侵犯了您的合法權(quán)益撰茎,請(qǐng)作者持權(quán)屬證明與本我們(QQ:981086665嵌牺;郵箱:981086665@qq.com)聯(lián)系聯(lián)系,我們將及時(shí)更正龄糊、刪除逆粹,謝謝。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末炫惩,一起剝皮案震驚了整個(gè)濱河市僻弹,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌诡必,老刑警劉巖奢方,帶你破解...
    沈念sama閱讀 211,743評(píng)論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件搔扁,死亡現(xiàn)場(chǎng)離奇詭異爸舒,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)稿蹲,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,296評(píng)論 3 385
  • 文/潘曉璐 我一進(jìn)店門扭勉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人苛聘,你說(shuō)我怎么就攤上這事涂炎。” “怎么了设哗?”我有些...
    開封第一講書人閱讀 157,285評(píng)論 0 348
  • 文/不壞的土叔 我叫張陵唱捣,是天一觀的道長(zhǎng)。 經(jīng)常有香客問我网梢,道長(zhǎng)震缭,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 56,485評(píng)論 1 283
  • 正文 為了忘掉前任战虏,我火速辦了婚禮拣宰,結(jié)果婚禮上党涕,老公的妹妹穿的比我還像新娘。我一直安慰自己巡社,他們只是感情好膛堤,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,581評(píng)論 6 386
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著晌该,像睡著了一般肥荔。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上朝群,一...
    開封第一講書人閱讀 49,821評(píng)論 1 290
  • 那天次企,我揣著相機(jī)與錄音,去河邊找鬼潜圃。 笑死缸棵,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的谭期。 我是一名探鬼主播堵第,決...
    沈念sama閱讀 38,960評(píng)論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼隧出!你這毒婦竟也來(lái)了踏志?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,719評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤胀瞪,失蹤者是張志新(化名)和其女友劉穎针余,沒想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體凄诞,經(jīng)...
    沈念sama閱讀 44,186評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡圆雁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,516評(píng)論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了帆谍。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片伪朽。...
    茶點(diǎn)故事閱讀 38,650評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖汛蝙,靈堂內(nèi)的尸體忽然破棺而出烈涮,到底是詐尸還是另有隱情,我是刑警寧澤窖剑,帶...
    沈念sama閱讀 34,329評(píng)論 4 330
  • 正文 年R本政府宣布坚洽,位于F島的核電站,受9級(jí)特大地震影響西土,放射性物質(zhì)發(fā)生泄漏讶舰。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,936評(píng)論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望绘雁。 院中可真熱鬧橡疼,春花似錦、人聲如沸庐舟。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,757評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)挪略。三九已至历帚,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間杠娱,已是汗流浹背挽牢。 一陣腳步聲響...
    開封第一講書人閱讀 31,991評(píng)論 1 266
  • 我被黑心中介騙來(lái)泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留摊求,地道東北人禽拔。 一個(gè)月前我還...
    沈念sama閱讀 46,370評(píng)論 2 360
  • 正文 我出身青樓,卻偏偏與公主長(zhǎng)得像室叉,于是被迫代替她去往敵國(guó)和親睹栖。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,527評(píng)論 2 349

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

  • 一茧痕、Redis高可用概述 在介紹Redis高可用之前野来,先說(shuō)明一下在Redis的語(yǔ)境中高可用的含義。 我們知道踪旷,在w...
    空語(yǔ)閱讀 1,593評(píng)論 0 2
  • 企業(yè)級(jí)redis集群架構(gòu)的特點(diǎn) 海量數(shù)據(jù) 高并發(fā) 高可用 要達(dá)到高可用曼氛,持久化是不可減少的,持久化主要是做災(zāi)難恢復(fù)...
    lucode閱讀 2,194評(píng)論 0 7
  • 本文檔翻譯自http://redis.io/topics/persistence令野。 這篇文章提供了 Redis 持...
    daos閱讀 690評(píng)論 0 10
  • 兩只手套 我有一副手套舀患,軟皮的,質(zhì)地非常好彩掐,天冷构舟,我放車門夾層,隨時(shí)用堵幽。 前幾...
    華益益閱讀 473評(píng)論 0 5
  • 這只是簡(jiǎn)短的記錄一下此時(shí)此刻的心情。 有時(shí)候會(huì)不會(huì)突然很想脫單呢弹澎?是因?yàn)榧拍瘑崞酉拢窟€是真的遇上了喜歡的人?有人說(shuō)苦蒿,一...
    攸然似我閱讀 205評(píng)論 0 0