五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

2023-06-25:redis中什么是緩存穿透?該如何解決?

2023-06-25 19:45 作者:福大大架構(gòu)師每日一題  | 我要投稿

2023-06-25:redis中什么是緩存穿透?該如何解決?

答案2023-06-25:

緩存穿透

緩存穿透指的是查詢一個(gè)根本不存在的數(shù)據(jù),在這種情況下,無論是緩存層還是存儲(chǔ)層都無法命中。因此,每次請(qǐng)求都需要訪問數(shù)據(jù)庫,這將導(dǎo)致不存在的數(shù)據(jù)每次都需要查詢存儲(chǔ)層,這樣緩存就失去了保護(hù)后端存儲(chǔ)的作用。緩存穿透問題的解決對(duì)于維護(hù)系統(tǒng)性能和資源利用至關(guān)重要。

造成緩存穿透的基本原因有兩個(gè)。

緩存穿透的主要原因有兩個(gè)。

首先,可能是由于業(yè)務(wù)代碼或數(shù)據(jù)本身出現(xiàn)問題。例如,如果數(shù)據(jù)庫中的ID從1開始自增,而某些請(qǐng)求攜帶了不存在的ID值(比如負(fù)數(shù)或特別大的值),如果對(duì)參數(shù)不進(jìn)行校驗(yàn),這些請(qǐng)求將會(huì)繞過緩存直接訪問數(shù)據(jù)庫。由于數(shù)據(jù)庫中也查不到對(duì)應(yīng)的數(shù)據(jù),每個(gè)請(qǐng)求都會(huì)以相同的方式處理,這樣會(huì)給數(shù)據(jù)庫帶來很大壓力,尤其是在高并發(fā)的情況下,容易導(dǎo)致系統(tǒng)崩潰。

其次,緩存穿透也可能由惡意攻擊、爬蟲等行為造成,這些請(qǐng)求大量命中緩存但數(shù)據(jù)卻不存在,導(dǎo)致每個(gè)請(qǐng)求都需要訪問存儲(chǔ)層。這種情況下,攻擊者可以通過大量的無意義請(qǐng)求消耗系統(tǒng)資源,從而影響系統(tǒng)的正常運(yùn)行。

image.png

如何解決

1.緩存空對(duì)象

當(dāng)存儲(chǔ)層不命中時(shí),即使在數(shù)據(jù)庫中也沒有找到命中的數(shù)據(jù),仍然將空對(duì)象保存到緩存層中。這樣,下次對(duì)該數(shù)據(jù)的訪問將從緩存中獲取,從而保護(hù)了后端數(shù)據(jù)源的訪問。然而,需要注意的是如果頻繁存儲(chǔ)空值,會(huì)導(dǎo)致緩存層占用更多的內(nèi)存空間,尤其在面對(duì)攻擊時(shí)問題更為嚴(yán)重。因此,可以為這類數(shù)據(jù)設(shè)置較短的過期時(shí)間,以使其能夠自動(dòng)被清理出緩存。

2.布隆過濾器攔截

在訪問緩存層和存儲(chǔ)層之前,使用布隆過濾器提前保存已存在的鍵,并進(jìn)行第一層攔截。例如,對(duì)于一個(gè)推薦系統(tǒng),存在4億個(gè)用戶ID,每個(gè)小時(shí)根據(jù)用戶的歷史行為計(jì)算并存儲(chǔ)推薦數(shù)據(jù)。然而,對(duì)于最新的用戶由于沒有歷史行為,可能發(fā)生緩存穿透。為此,可以將所有推薦數(shù)據(jù)的用戶ID構(gòu)建成布隆過濾器。如果布隆過濾器認(rèn)為某個(gè)用戶ID不存在,就不會(huì)進(jìn)一步訪問存儲(chǔ)層,從而在一定程度上保護(hù)了存儲(chǔ)層。

image.png

這些方法適用于數(shù)據(jù)命中率不高、數(shù)據(jù)相對(duì)穩(wěn)定、實(shí)時(shí)性要求較低(通常是數(shù)據(jù)集較大)的應(yīng)用場景。盡管實(shí)施這些方法可能會(huì)增加代碼的維護(hù)復(fù)雜性,但能有效減少緩存空間的占用。


2023-06-25:redis中什么是緩存穿透?該如何解決?的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
黄大仙区| 清流县| 满洲里市| 定州市| 定远县| 上饶县| 肇源县| 繁峙县| 康保县| 玛纳斯县| 永昌县| 兰考县| 大竹县| 东山县| 临夏县| 荆门市| 祁阳县| 饶河县| 两当县| 宁都县| 鄂温| 定南县| 龙川县| 承德市| 陆良县| 常熟市| 图木舒克市| 文山县| 青田县| 八宿县| 繁峙县| 怀仁县| 富源县| 黎平县| 南开区| 庐江县| 云浮市| 清涧县| 鹿泉市| 旌德县| 多伦县|