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

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

Redis緩存穿透(七)

2021-11-25 14:19 作者:動力節(jié)點  | 我要投稿

關(guān)視頻參考



一、緩存穿透

1.概念

????緩存穿透的概念很簡單,用戶想要查詢一個數(shù)據(jù),發(fā)現(xiàn)redis內(nèi)存數(shù)據(jù)庫沒有,也就是緩存沒有命中,于是向持久層數(shù)據(jù)庫查詢。發(fā)現(xiàn)也沒有,于是本次查詢失敗。當(dāng)用戶很多的時候,緩存都沒有命中,于是都去請求了持久層數(shù)據(jù)庫。這會給持久層數(shù)據(jù)庫造成很大的壓力,這時候就相當(dāng)于出現(xiàn)了緩存穿透。

????這里需要注意和緩存擊穿的區(qū)別,緩存擊穿,是指一個key非常熱點,在不停的扛著大并發(fā),大并發(fā)集中對這一個點進(jìn)行訪問,當(dāng)這個key在失效的瞬間,持續(xù)的大并發(fā)就穿破緩存,直接請求數(shù)據(jù)庫,就像在一個屏障上鑿開了一個洞。 ?

2.解決方案

1)布隆過濾器

?

????布隆過濾器是一種數(shù)據(jù)結(jié)構(gòu),垃圾網(wǎng)站和正常網(wǎng)站加起來全世界據(jù)統(tǒng)計也有幾十億個。網(wǎng)警要過濾這些垃圾網(wǎng)站,總不能到數(shù)據(jù)庫里面一個一個去比較吧,這就可以使用布隆過濾器。假設(shè)我們存儲一億個垃圾網(wǎng)站地址。

????有一天網(wǎng)警查到了一個可疑的網(wǎng)站,想判斷一下是否是XX網(wǎng)站,首先將可疑網(wǎng)站通過哈希映射到1億個比特數(shù)組上的8個點。如果8個點的其中有一個點不為1,則可以判斷該元素一定不存在集合中。

????那這個布隆過濾器是如何解決redis中的緩存穿透呢?很簡單首先也是對所有可能查詢的參數(shù)以hash形式存儲,當(dāng)用戶想要查詢的時候,使用布隆過濾器發(fā)現(xiàn)不在集合中,就直接丟棄,不再對持久層查詢。



?

這個形式很簡單。

2)緩存空對象

????當(dāng)存儲層不命中后,即使返回的空對象也將其緩存起來,同時會設(shè)置一個過期時間,之后再訪問這個數(shù)據(jù)將會從緩存中獲取,保護(hù)了后端數(shù)據(jù)源;

????

?

但是這種方法會存在兩個問題:

????如果空值能夠被緩存起來,這就意味著緩存需要更多的空間存儲更多的鍵,因為這當(dāng)中可能會有很多的空值的鍵;

????即使對空值設(shè)置了過期時間,還是會存在緩存層和存儲層的數(shù)據(jù)會有一段時間窗口的不一致,這對于需要保持一致性的業(yè)務(wù)會有影響。

二、緩存雪崩

1、概念

緩存雪崩是指,緩存層出現(xiàn)了錯誤,不能正常工作了。于是所有的請求都會達(dá)到存儲層,存儲層的調(diào)用量會暴增,造成存儲層也會掛掉的情況。

2、2.解決方案

(1)redis高可用

這個思想的含義是,既然redis有可能掛掉,那我多增設(shè)幾臺redis,這樣一臺掛掉之后其他的還可以繼續(xù)工作,其實就是搭建的集群。

(2)限流降級

這個解決方案的思想是,在緩存失效后,通過加鎖或者隊列來控制讀數(shù)據(jù)庫寫緩存的線程數(shù)量。比如對某個key只允許一個線程查詢數(shù)據(jù)和寫緩存,其他線程等待。

(3)數(shù)據(jù)預(yù)熱

數(shù)據(jù)加熱的含義就是在正式部署之前,我先把可能的數(shù)據(jù)先預(yù)先訪問一遍,這樣部分可能大量訪問的數(shù)據(jù)就會加載到緩存中。在即將發(fā)生大并發(fā)訪問前手動觸發(fā)加載緩存不同的key,設(shè)置不同的過期時間,讓緩存失效的時間點盡量均勻。


Redis緩存穿透(七)的評論 (共 條)

分享到微博請遵守國家法律
剑河县| 桐梓县| 五大连池市| 贵定县| 武功县| 肥乡县| 桐乡市| 屯留县| 溧水县| 灵丘县| 平安县| 忻城县| 达州市| 黄浦区| 莆田市| 古丈县| 吴川市| 德格县| 定远县| 海盐县| 介休市| 绍兴县| 西乌珠穆沁旗| 黄骅市| 永年县| 兴宁市| 庆安县| 冀州市| 张家口市| 蒙阴县| 长沙市| 宜兴市| 大丰市| 新余市| 益阳市| 西丰县| 泸西县| 繁昌县| 辉南县| 湄潭县| 仲巴县|