緩存基礎(chǔ)整理

一、理解緩存

以空間換時(shí)間逆皮,所有保存“中間的宅粥、額外的”數(shù)據(jù)的機(jī)制,都可以稱之為緩存电谣。

二秽梅、緩存的作用

通過以下兩點(diǎn),對(duì)系統(tǒng)性能有提升

(1)縮短時(shí)間剿牺,有些數(shù)據(jù)可能查詢起來(lái)或是運(yùn)算起來(lái)很花時(shí)間企垦, 那么我們就可以在某次獲取該數(shù)據(jù)后放在可以快速取回的地方。

(2)降低壓力晒来,在高并發(fā)的情況下可能會(huì)導(dǎo)致數(shù)據(jù)庫(kù)壓力過大竹观,借助數(shù)據(jù)緩存可以很好的規(guī)避這種問題。

三潜索、緩存的合理性

(1)訪問頻率是高還是低?

如果訪問頻率低懂酱,緩存帶來(lái)的業(yè)務(wù)復(fù)雜度弊端會(huì)高于系統(tǒng)性能提高的優(yōu)勢(shì)竹习;所以訪問頻率高,適合緩存列牺,而且效果也好些整陌;

(2) 讀寫比例是什么樣的?

訪問頻率高,讀多寫少泌辫,適合緩存随夸,效果會(huì)好

(3)數(shù)據(jù)一致性要求高嗎?

使用緩存適用那些對(duì)數(shù)據(jù)一致性要求不高的業(yè)務(wù)震放。

四宾毒、緩存的進(jìn)化

(1)業(yè)務(wù)開始時(shí),使用關(guān)系型數(shù)據(jù)庫(kù)

(2)用戶量上來(lái)后殿遂,將數(shù)據(jù)庫(kù)改為讀寫分離的架構(gòu)诈铛。

(3)還是撐不住,增加數(shù)據(jù)緩存層(redis)

(4)進(jìn)一步優(yōu)化墨礁,再次增加緩存層幢竹,形成多級(jí)緩存

(5)通過增加緩存監(jiān)控,確保緩存的有效性恩静,以及進(jìn)一步優(yōu)化緩存的策略等

五焕毫、緩存常見問題

下面所說(shuō)的三種問題緩存方案都類似于Redis+Mysql,首先先從緩存中獲取數(shù)據(jù)驶乾,找不到的時(shí)候去數(shù)據(jù)庫(kù)獲取數(shù)據(jù)并更新到緩存中邑飒。

(1)緩存穿透

請(qǐng)求去查詢一條壓根兒數(shù)據(jù)庫(kù)中根本就不存在的數(shù)據(jù),也就是緩存和數(shù)據(jù)庫(kù)都查詢不到這條數(shù)據(jù)轻掩,但是請(qǐng)求每次都會(huì)打到數(shù)據(jù)庫(kù)上面去幸乒。

解決方案:

1.對(duì)于返回為NULL的依然緩存

2.制定一些規(guī)則過濾一些不可能存在的數(shù)據(jù)

(2)緩存擊穿

在平常高并發(fā)的系統(tǒng)中,大量的請(qǐng)求同時(shí)查詢一個(gè) key 時(shí)唇牧,此時(shí)這個(gè)key正好失效了罕扎,就會(huì)導(dǎo)致大量的請(qǐng)求都打到數(shù)據(jù)庫(kù)上面去。這種現(xiàn)象我們稱為緩存擊穿丐重。

解決方案:

1.加分布式鎖腔召,對(duì)于獲取到這個(gè)鎖的線程,查詢數(shù)據(jù)庫(kù)更新緩存扮惦,其他線程采取重試策略

2.采取到期自動(dòng)刷新的策略臀蛛,而不是到期自動(dòng)淘汰

(3)緩存雪崩

當(dāng)某一時(shí)刻發(fā)生大規(guī)模的緩存失效的情況,比如你的緩存服務(wù)宕機(jī)了崖蜜,會(huì)有大量的請(qǐng)求進(jìn)來(lái)直接打到DB上面浊仆。

解決方案:

1.增加緩存系統(tǒng)可用性,通過監(jiān)控關(guān)注緩存的健康程度,根據(jù)業(yè)務(wù)量適當(dāng)?shù)臄U(kuò)容緩存豫领。

2.采用多級(jí)緩存抡柿,不同級(jí)別緩存設(shè)置的超時(shí)時(shí)間不同,及時(shí)某個(gè)級(jí)別緩存都過期等恐,也有其他級(jí)別緩存兜底洲劣。

3.緩存的過期時(shí)間可以取個(gè)隨機(jī)值备蚓,盡量讓不同Key的過期時(shí)間不同。

六囱稽、緩存更新策略

(1)Cache Aside

應(yīng)用查詢數(shù)據(jù)的時(shí)候先查詢緩存層的數(shù)據(jù)郊尝,如果緩存中沒有則到數(shù)據(jù)庫(kù)中查詢數(shù)據(jù),并把數(shù)據(jù)放入緩存層战惊。

更新數(shù)據(jù)的時(shí)候先對(duì)數(shù)據(jù)庫(kù)進(jìn)行更新流昏,然后通過指令使緩存層的數(shù)據(jù)失效。

(2)Read/Write Through

應(yīng)用要讀數(shù)據(jù)和更新數(shù)據(jù)都直接訪問緩存服務(wù)

緩存服務(wù)同步的將數(shù)據(jù)更新到數(shù)據(jù)庫(kù)

(3)Write Behind

應(yīng)用要讀數(shù)據(jù)和更新數(shù)據(jù)都直接訪問緩存服務(wù)

緩存服務(wù)異步的將數(shù)據(jù)更新到數(shù)據(jù)庫(kù)(通過異步任務(wù))

最后

正確的使用緩存可以讓系統(tǒng)性能有提升样傍,要注意需要針對(duì)不同場(chǎng)景來(lái)設(shè)計(jì)最佳的緩存方案横缔。實(shí)踐出真知,要想真正掌握緩存衫哥,還是需要在項(xiàng)目設(shè)計(jì)中多多考慮茎刚、

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市撤逢,隨后出現(xiàn)的幾起案子膛锭,更是在濱河造成了極大的恐慌,老刑警劉巖蚊荣,帶你破解...
    沈念sama閱讀 219,110評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件初狰,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡互例,警方通過查閱死者的電腦和手機(jī)奢入,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,443評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)媳叨,“玉大人腥光,你說(shuō)我怎么就攤上這事『眩” “怎么了武福?”我有些...
    開封第一講書人閱讀 165,474評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)痘番。 經(jīng)常有香客問我捉片,道長(zhǎng)皱坛,這世上最難降的妖魔是什么茄厘? 我笑而不...
    開封第一講書人閱讀 58,881評(píng)論 1 295
  • 正文 為了忘掉前任,我火速辦了婚禮钳恕,結(jié)果婚禮上昂芜,老公的妹妹穿的比我還像新娘翻斟。我一直安慰自己,他們只是感情好说铃,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,902評(píng)論 6 392
  • 文/花漫 我一把揭開白布访惜。 她就那樣靜靜地躺著,像睡著了一般腻扇。 火紅的嫁衣襯著肌膚如雪债热。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,698評(píng)論 1 305
  • 那天幼苛,我揣著相機(jī)與錄音窒篱,去河邊找鬼。 笑死舶沿,一個(gè)胖子當(dāng)著我的面吹牛墙杯,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播括荡,決...
    沈念sama閱讀 40,418評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼高镐,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來(lái)了畸冲?” 一聲冷哼從身側(cè)響起嫉髓,我...
    開封第一講書人閱讀 39,332評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎邑闲,沒想到半個(gè)月后算行,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,796評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡苫耸,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,968評(píng)論 3 337
  • 正文 我和宋清朗相戀三年州邢,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片褪子。...
    茶點(diǎn)故事閱讀 40,110評(píng)論 1 351
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡量淌,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出褐筛,到底是詐尸還是另有隱情类少,我是刑警寧澤,帶...
    沈念sama閱讀 35,792評(píng)論 5 346
  • 正文 年R本政府宣布渔扎,位于F島的核電站硫狞,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏晃痴。R本人自食惡果不足惜残吩,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,455評(píng)論 3 331
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望倘核。 院中可真熱鬧泣侮,春花似錦、人聲如沸紧唱。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,003評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至蛹锰,卻和暖如春深胳,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背铜犬。 一陣腳步聲響...
    開封第一講書人閱讀 33,130評(píng)論 1 272
  • 我被黑心中介騙來(lái)泰國(guó)打工舞终, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人癣猾。 一個(gè)月前我還...
    沈念sama閱讀 48,348評(píng)論 3 373
  • 正文 我出身青樓敛劝,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親纷宇。 傳聞我的和親對(duì)象是個(gè)殘疾皇子夸盟,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,047評(píng)論 2 355

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