redis持久化的意義
對于企業(yè)級的redis架構(gòu)來說献汗,持久化是不可減少的
企業(yè)級redis集群架構(gòu):海量數(shù)據(jù)敢订,高并發(fā),高可用
持久化主要是做在災(zāi)難恢復(fù)罢吃,數(shù)據(jù)恢復(fù)楚午,也可以歸類到高可用一個環(huán)節(jié)中。
很有可能尿招,大量請求過來矾柜,緩存全部無法命中,這個時候就死定了就谜,緩存雪崩問題怪蔑,所有請求,沒有在redis命中丧荐,就會mysql中找缆瓣,一下在mysql承接高并發(fā),就宕機了篮奄。
redis持久化:RDB AOF
1.RDB和AOF兩種持久化機制的介紹
RDB持久化機制捆愁,對redis中的數(shù)據(jù)執(zhí)行周期性持久化
AOF機制對每條寫入命令作為日志,以append-only的模式寫入一個日志文件中窟却,在redis重啟時昼丑,可以通過回放AOF日志中的寫入指令來重構(gòu)整個數(shù)據(jù)集
如果我們想要redis僅僅作為出內(nèi)存的緩沖來用,那么可以禁止ROB和AOF所有的持久化機制夸赫。
通過RDB或AOF菩帝,都可以將redis內(nèi)存中的數(shù)據(jù)給持久化到磁盤上,然后可以將這些數(shù)據(jù)備份到別的地方去
如果redis掛了茬腿,服務(wù)器上內(nèi)存和磁盤數(shù)據(jù)丟失了呼奢,可以從云服務(wù)上拷貝回來之后,放在指定目錄切平,重啟redis握础,redis就會自動根據(jù)持久化數(shù)據(jù)文件中的數(shù)據(jù),去恢復(fù)內(nèi)存中的數(shù)據(jù)悴品,繼續(xù)對外提供服務(wù)禀综。
如果同時使用RDB和AOF兩種持久化機制,那么在redis 重啟的時候苔严,會使用AOF來重新構(gòu)建數(shù)據(jù)定枷,因為AOF中的數(shù)據(jù)更加完整。
RDB持久化機制優(yōu)點及缺點
優(yōu)點:
- RDB會生成多個數(shù)據(jù)文件届氢,每個數(shù)據(jù)文件都代表某一個時刻中redis的數(shù)據(jù)欠窒,這種多個數(shù)據(jù)文件的方式,非常適合做冷備退子,可以將這種完整的數(shù)據(jù)文件發(fā)送到一些遠程的安全存儲上岖妄。
- RDB對redis對外提供讀寫服務(wù),影響非常小寂祥,可以讓redis保持高性能衣吠,因為redis主進程只需要fork一個子進程,讓子進程執(zhí)行磁盤IO操作來進行RDB持久化即可壤靶。
- 相對于AOF持久化機制來說缚俏,直接基于RDB數(shù)據(jù)文件來重啟和恢復(fù)redis進程,更加敏捷贮乳。
缺點
- 如果想要在redis故障中忧换,盡可能少的丟失數(shù)據(jù),那么RDB沒有AOF好向拆,一般來說亚茬,RDB數(shù)據(jù)快照文件,都是每隔5分鐘浓恳,或者更長時間生成一次刹缝,這個時候就得接受一旦redis進程宕機碗暗,那么會丟失最近5分鐘的數(shù)據(jù)。
*RDB每次fock子進程來執(zhí)行RDB快照數(shù)據(jù)文件生成時候梢夯,如果數(shù)據(jù)文件特別大言疗,可能會導(dǎo)致對客戶提供的服務(wù)暫停數(shù)毫秒,甚至數(shù)秒鐘颂砸。
AOF持久化機制優(yōu)點及缺點
優(yōu)點:
- AOF可以更好保證數(shù)據(jù)不丟失噪奄,一般AOF每個1秒,通過后臺線程執(zhí)行一次fsync操作人乓,最多丟失1秒鐘數(shù)據(jù)
- AOF日志文件以append-only模式寫入勤篮,所以沒有任何磁盤尋址開銷,寫入性能非常高色罚,而且文件不容易損壞碰缔,及時文件損壞,也是很容易修復(fù)的戳护。
- AOF日志文件及時過大的時候手负,出現(xiàn)后臺重寫操作,也不會影響客戶端的讀寫姑尺,因為在rewrite log的時候竟终,會對其中的指導(dǎo)進行壓縮,創(chuàng)建出一份需要恢復(fù)數(shù)據(jù)的最小日志切蟋,在創(chuàng)建新日志文件時候统捶,老的日志文件照常寫入,當新的merge后的日志文件ready時候柄粹,再交換新老日志文件即可喘鸟。
缺點:
- 對于同一份數(shù)據(jù)來說,AOF日志文件通常比RDB數(shù)據(jù)快照文件更大
- AOF開啟后驻右,支持寫QPS會比RDB支持的寫QPS低什黑,因為AOF一般會配置成每秒fsync一次日志文件,當然堪夭,每秒一次fsync,性能也還是很高的
RDB和AOF如何選擇
- 不要僅僅使用RDB愕把,因為那樣會導(dǎo)致你丟失很多數(shù)據(jù)
- 也不要僅僅使用AOF,因為那樣有兩個問題森爽,第一恨豁,你通過AOF做冷備,沒有RDB做冷備爬迟,來的恢復(fù)速度更快; 第二橘蜜,RDB每次簡單粗暴生成數(shù)據(jù)快照,更加健壯付呕,可以避免AOF這種復(fù)雜的備份和恢復(fù)機制的bug
- 綜合使用AOF和RDB兩種持久化機制计福,用AOF來保證數(shù)據(jù)不丟失跌捆,作為數(shù)據(jù)恢復(fù)的第一選擇; 用RDB來做不同程度的冷備,在AOF文件都丟失或損壞不可用的時候象颖,還可以使用RDB來進行快速的數(shù)據(jù)恢復(fù)