Redis 持久化機(jī)制

持久化數(shù)據(jù)纷捞,也就是將內(nèi)存中的數(shù)據(jù)寫(xiě)入到硬盤(pán)里松靡,大部分原因是為了之后重用數(shù)據(jù)(比如重啟機(jī)器狐榔、機(jī)器故障后恢復(fù)數(shù)據(jù))坛增,或是為了防止系統(tǒng)故障而將數(shù)據(jù)備份到遠(yuǎn)程。

Redis 不同于 Memcached 的重要一點(diǎn)就是薄腻,Redis 支持持久化收捣,且支持兩種不同的持久化操作。

默認(rèn)的持久化方式叫快照(snapshotting庵楷,RDB)株茶,另一種方式是只追加文件(append-only file赫编,AOF)况木。

快照(snapshotting)持久化(RDB)

Redis 可以通過(guò)創(chuàng)建快照來(lái)獲得存儲(chǔ)在內(nèi)存里面的數(shù)據(jù)在某個(gè)時(shí)間點(diǎn)上的副本乃坤。Redis 創(chuàng)建快照之后,可以對(duì)快照進(jìn)行備份弄贿,或者將快照復(fù)制到其他服務(wù)器春锋,從而創(chuàng)建具有相同數(shù)據(jù)的服務(wù)器副本(Redis 主從結(jié)構(gòu),主要用來(lái)提高 Redis 性能)差凹,還可以將快照留在原地期奔,以便重啟服務(wù)器的時(shí)候使用。

快照持久化是 Redis 默認(rèn)采用的持久化方式危尿,在 redis.conf 配置文件中默認(rèn)有此下配置:

save 900 1           # 900秒(15分鐘)后呐萌,如果至少有1個(gè)key發(fā)生變化,Redis 就會(huì)自動(dòng)觸發(fā) BGSAVE 命令創(chuàng)建快照
save 300 10          # 300秒(5分鐘)后谊娇,如果至少有10個(gè)key發(fā)生變化肺孤,Redis 就會(huì)自動(dòng)觸發(fā) BGSAVE 命令創(chuàng)建快照
save 60 10000        # 60秒(1分鐘)后,如果至少有10000個(gè)key發(fā)生變化济欢,Redis 就會(huì)自動(dòng)觸發(fā) BGSAVE 命令創(chuàng)建快照

AOF(append-only file)持久化

與快照持久化相比赠堵,AOF 持久化的實(shí)時(shí)性更好,因此已成為主流的持久化方案法褥。默認(rèn)情況下 Redis 是沒(méi)有開(kāi)啟 AOF(append only file)方式的持久化顾腊,可以通過(guò) appendonly 參數(shù)開(kāi)啟:

appendonly yes

開(kāi)啟 AOF 持久化后,每執(zhí)行一條會(huì)更改 Redis 中的數(shù)據(jù)的命令挖胃,Redis 會(huì)將該命令寫(xiě)入硬盤(pán)中的 AOF 文件。AOF 文件的保存位置和 RDB 文件的位置相同,都是通過(guò) dir 參數(shù)設(shè)置的酱鸭,默認(rèn)的文件名是 appendonly.aof吗垮。

在 Redis 的配置文件中,存在三種不同的 AOF 持久化方式凹髓,分別是:

appendfsync always    # 每次有數(shù)據(jù)修改發(fā)生時(shí)都會(huì)寫(xiě)入 AOF 文件,這樣會(huì)嚴(yán)重降低 Redis 的速度
appendfsync everysec  # 每秒鐘同步一次烁登,顯示地將多個(gè)寫(xiě)命令同步到硬盤(pán)(推薦)
appendfsync no        # 讓操作系統(tǒng)決定何時(shí)進(jìn)行同步

為兼顧數(shù)據(jù)和寫(xiě)入性能,應(yīng)當(dāng)首先考慮 appendfsync everysec 選項(xiàng) 蔚舀,讓 Redis 每秒同步一次 AOF 文件饵沧,Redis 性能幾乎沒(méi)受到任何影響。而且這樣即使出現(xiàn)系統(tǒng)崩潰赌躺,用戶最多只會(huì)丟失一秒內(nèi)產(chǎn)生的數(shù)據(jù)狼牺。當(dāng)硬盤(pán)忙于執(zhí)行寫(xiě)入操作的時(shí)候,Redis 還會(huì)優(yōu)雅的放慢自己的速度以便適應(yīng)硬盤(pán)的最大寫(xiě)入速度礼患。

Redis 4.0 對(duì)于持久化機(jī)制的優(yōu)化

Redis 4.0 開(kāi)始支持 RDB 和 AOF 的混合持久化(默認(rèn)關(guān)閉是钥,可以通過(guò)配置項(xiàng) aof-use-rdb-preamble 開(kāi)啟)。

如果把混合持久化打開(kāi)缅叠,AOF 重寫(xiě)的時(shí)候就直接把 RDB 的內(nèi)容寫(xiě)到 AOF 文件開(kāi)頭悄泥。這樣做的好處是可以結(jié)合 RDB 和 AOF 的優(yōu)點(diǎn), 快速加載同時(shí)避免丟失過(guò)多的數(shù)據(jù)。當(dāng)然缺點(diǎn)也是有的肤粱, AOF 里面的 RDB 部分是壓縮格式而不再是 AOF 格式弹囚,可讀性較差。

AOF 重寫(xiě)

AOF 重寫(xiě)可以產(chǎn)生一個(gè)新的 AOF 文件领曼,這個(gè)新的 AOF 文件和原有的 AOF 文件所保存的數(shù)據(jù)庫(kù)狀態(tài)一樣鸥鹉,但體積更小。

AOF 重寫(xiě)是一個(gè)有歧義的名字悯森,該功能是通過(guò)讀取數(shù)據(jù)庫(kù)中的鍵值對(duì)來(lái)實(shí)現(xiàn)的宋舷,程序無(wú)須對(duì)現(xiàn)有 AOF 文件進(jìn)行任何讀入、分析或者寫(xiě)入操作瓢姻。

在執(zhí)行 BGREWRITEAOF 命令時(shí)祝蝠,Redis 服務(wù)器會(huì)維護(hù)一個(gè) AOF 重寫(xiě)緩沖區(qū),該緩沖區(qū)會(huì)在子進(jìn)程創(chuàng)建新 AOF 文件期間幻碱,記錄服務(wù)器執(zhí)行的所有寫(xiě)命令绎狭。當(dāng)子進(jìn)程完成創(chuàng)建新 AOF 文件的工作之后,服務(wù)器會(huì)將重寫(xiě)緩沖區(qū)中的所有內(nèi)容追加到新 AOF 文件的末尾褥傍,使得新舊兩個(gè) AOF 文件所保存的數(shù)據(jù)庫(kù)狀態(tài)一致儡嘶。最后,服務(wù)器用新的 AOF 文件替換舊的 AOF 文件恍风,以此來(lái)完成 AOF 文件重寫(xiě)操作蹦狂。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末誓篱,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子凯楔,更是在濱河造成了極大的恐慌窜骄,老刑警劉巖,帶你破解...
    沈念sama閱讀 211,042評(píng)論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件摆屯,死亡現(xiàn)場(chǎng)離奇詭異邻遏,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)虐骑,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,996評(píng)論 2 384
  • 文/潘曉璐 我一進(jìn)店門(mén)准验,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人廷没,你說(shuō)我怎么就攤上這事糊饱。” “怎么了腕柜?”我有些...
    開(kāi)封第一講書(shū)人閱讀 156,674評(píng)論 0 345
  • 文/不壞的土叔 我叫張陵济似,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我盏缤,道長(zhǎng)砰蠢,這世上最難降的妖魔是什么? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 56,340評(píng)論 1 283
  • 正文 為了忘掉前任唉铜,我火速辦了婚禮台舱,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘潭流。我一直安慰自己竞惋,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 65,404評(píng)論 5 384
  • 文/花漫 我一把揭開(kāi)白布灰嫉。 她就那樣靜靜地躺著拆宛,像睡著了一般。 火紅的嫁衣襯著肌膚如雪讼撒。 梳的紋絲不亂的頭發(fā)上浑厚,一...
    開(kāi)封第一講書(shū)人閱讀 49,749評(píng)論 1 289
  • 那天,我揣著相機(jī)與錄音根盒,去河邊找鬼钳幅。 笑死,一個(gè)胖子當(dāng)著我的面吹牛炎滞,可吹牛的內(nèi)容都是我干的敢艰。 我是一名探鬼主播,決...
    沈念sama閱讀 38,902評(píng)論 3 405
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼册赛,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼钠导!你這毒婦竟也來(lái)了震嫉?” 一聲冷哼從身側(cè)響起,我...
    開(kāi)封第一講書(shū)人閱讀 37,662評(píng)論 0 266
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤辈双,失蹤者是張志新(化名)和其女友劉穎责掏,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體湃望,經(jīng)...
    沈念sama閱讀 44,110評(píng)論 1 303
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,451評(píng)論 2 325
  • 正文 我和宋清朗相戀三年痰驱,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了证芭。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,577評(píng)論 1 340
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡担映,死狀恐怖废士,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情蝇完,我是刑警寧澤官硝,帶...
    沈念sama閱讀 34,258評(píng)論 4 328
  • 正文 年R本政府宣布,位于F島的核電站短蜕,受9級(jí)特大地震影響氢架,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜朋魔,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,848評(píng)論 3 312
  • 文/蒙蒙 一岖研、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧警检,春花似錦孙援、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 30,726評(píng)論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至镶奉,卻和暖如春础淤,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背腮鞍。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 31,952評(píng)論 1 264
  • 我被黑心中介騙來(lái)泰國(guó)打工值骇, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人移国。 一個(gè)月前我還...
    沈念sama閱讀 46,271評(píng)論 2 360
  • 正文 我出身青樓吱瘩,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親迹缀。 傳聞我的和親對(duì)象是個(gè)殘疾皇子使碾,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 43,452評(píng)論 2 348

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

  • 參考文章: Redis提供的持久化機(jī)制(RDB和AOF) 前言:本文只是一個(gè)簡(jiǎn)單的介紹和總結(jié)蜜徽,具體學(xué)習(xí)還請(qǐng)自行查詢...
    拿破侖蛋糕閱讀 378評(píng)論 0 0
  • 一、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
  • Redis 持久化機(jī)制的意義 Redis 如果只是把數(shù)據(jù)放在內(nèi)存中是沒(méi)有辦法應(yīng)對(duì)一些災(zāi)難性的故障的,比如機(jī)房停機(jī)祟剔,...
    殷建衛(wèi)閱讀 493評(píng)論 0 2
  • 真不知道是房東的原因還是客戶的原因隔躲?還是我的原因?本來(lái)買(mǎi)賣是件兩全其美的事情物延,到最后一拍兩散宣旱,心煩,這可是我調(diào)解了...
    幸福和簡(jiǎn)單閱讀 245評(píng)論 0 0