短視頻APP源碼,Redis是了解系統(tǒng)緩存的敲門磚
緩存在短視頻app源碼的運(yùn)行中起到了非常重要的作用,短視頻app源碼用戶的增多,加大了對(duì)數(shù)據(jù)庫讀取的壓力,影響數(shù)據(jù)庫性能。為了緩解短視頻app源碼數(shù)據(jù)庫的壓力,可以通過Redis緩存來實(shí)現(xiàn)讀寫分離,方便數(shù)據(jù)的快速讀取。 ?
一、Redis緩存 Redis是一種內(nèi)存數(shù)據(jù)庫,支持?jǐn)?shù)據(jù)的快速讀取,但是Redis的內(nèi)存很小,短視頻app源碼通常和MySQL配合使用,MySQL承擔(dān)數(shù)據(jù)存儲(chǔ)的功能,而Redis就承擔(dān)了緩存的任務(wù)。
當(dāng)短視頻app源碼用戶請(qǐng)求需要訪問數(shù)據(jù)庫時(shí),會(huì)先訪問緩存層,緩存層里面沒有用戶請(qǐng)求的數(shù)據(jù)時(shí),緩存會(huì)向數(shù)據(jù)庫請(qǐng)求數(shù)據(jù)返回給用戶,并將數(shù)據(jù)進(jìn)行緩存,當(dāng)下一個(gè)用戶再次請(qǐng)求同樣的數(shù)據(jù)時(shí),緩存層就可以直接返回,這大大減少了用戶請(qǐng)求數(shù)據(jù)庫的次數(shù),極大地增加了數(shù)據(jù)庫的安全性。
?
二、影響Redis緩存的問題及解決方案
1、熱點(diǎn)數(shù)據(jù)和冷數(shù)據(jù)
熱點(diǎn)數(shù)據(jù)可以理解為短視頻app源碼用戶會(huì)經(jīng)常訪問的數(shù)據(jù),冷數(shù)據(jù)就是用戶很少去訪問的數(shù)據(jù)。在緩存中,應(yīng)該存儲(chǔ)的應(yīng)該是一些熱點(diǎn)數(shù)據(jù),負(fù)責(zé)一些冷數(shù)據(jù)沒有用戶訪問還進(jìn)行存儲(chǔ),非常浪費(fèi)內(nèi)存,也讓緩存失去了原本的意義。
2、緩存雪崩
當(dāng)短視頻APP源碼緩存層中的緩存數(shù)據(jù)因?yàn)槟承┰蜻^期,而還沒有取到新的緩存數(shù)據(jù)的時(shí)候,用戶請(qǐng)求直接同時(shí)訪問了數(shù)據(jù)庫里面的數(shù)據(jù),給數(shù)據(jù)庫帶去了極大的壓力,造成了數(shù)據(jù)庫宕機(jī)或一系列反應(yīng),導(dǎo)致短視頻APP源碼不能正常運(yùn)行。
通過對(duì)數(shù)據(jù)庫加鎖或者加隊(duì)列的方式,防止大量的短視頻app源碼用戶對(duì)數(shù)據(jù)庫數(shù)據(jù)同時(shí)進(jìn)行讀寫,或者將熱點(diǎn)數(shù)據(jù)進(jìn)行分布式部署,放在不同的緩存層當(dāng)中,減緩?fù)粋€(gè)緩存層的壓力。當(dāng)然,也可以將緩存數(shù)據(jù)過期時(shí)間岔開,防止同時(shí)過期。
?
3、緩存穿透
緩存穿透一般是因?yàn)橛脩舨粩嗟卣?qǐng)求緩存層和數(shù)據(jù)庫中都不存在的數(shù)據(jù)引起的,這樣的請(qǐng)求會(huì)不斷的訪問數(shù)據(jù)庫,數(shù)據(jù)庫也必須返回空值,加劇了數(shù)據(jù)庫的壓力。
可以通過布隆過濾器,過濾掉數(shù)據(jù)一定不存在的用戶請(qǐng)求,防止這樣的請(qǐng)求頻繁訪問短視頻app源碼數(shù)據(jù)庫。還可以將用戶查詢不到的數(shù)據(jù)用鍵值對(duì)的方式寫入緩存層,當(dāng)不斷的請(qǐng)求這個(gè)空數(shù)據(jù)時(shí),直接從緩存層返回空值,雖然這個(gè)緩存數(shù)據(jù)會(huì)很快過期,但也是非常簡(jiǎn)單有效的方式。
聲明:以上內(nèi)容為云豹科技作者本人原創(chuàng),未經(jīng)作者本人同意,禁止轉(zhuǎn)載,否則將追究相關(guān)法律責(zé)任