最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(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)遵守國家法律
三河市| 呈贡县| 金寨县| 湘西| 延川县| 沾益县| 通州市| 湖南省| 广汉市| 宁河县| 鲁甸县| 井陉县| 四川省| 永康市| 灌南县| 凤庆县| 河南省| 托里县| 榆社县| 墨玉县| 拉萨市| 马尔康县| 兴宁市| 名山县| 普安县| 甘洛县| 静乐县| 额济纳旗| 古蔺县| 六枝特区| 吉林省| 昆明市| 重庆市| 扬中市| 乌兰县| 阆中市| 申扎县| 云南省| 桂林市| 玛曲县| 寿阳县|