中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Redis緩存穿透和緩存雪崩的概念是什么

發布時間:2022-01-15 15:43:36 來源:億速云 閱讀:159 作者:iii 欄目:大數據

這篇文章主要介紹了Redis緩存穿透和緩存雪崩的概念是什么的相關知識,內容詳細易懂,操作簡單快捷,具有一定借鑒價值,相信大家閱讀完這篇Redis緩存穿透和緩存雪崩的概念是什么文章都會有所收獲,下面我們一起來看看吧。

一、緩存穿透

1、概念

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

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

為了避免緩存穿透其實有很多種解決方案。下面介紹幾種。

2、解決方案

(1)布隆過濾器

布隆過濾器是一種數據結構,垃圾網站和正常網站加起來全世界據統計也有幾十億個。網警要過濾這些垃圾網站,總不能到數據庫里面一個一個去比較吧,這就可以使用布隆過濾器。假設我們存儲一億個垃圾網站地址。

可以先有一億個二進制比特,然后網警用八個不同的隨機數產生器(F1,F2, …,F8) 產生八個信息指紋(f1, f2, …, f8)。接下來用一個隨機數產生器 G 把這八個信息指紋映射到 1 到1億中的八個自然數 g1, g2, …,g8。最后把這八個位置的二進制全部設置為一。過程如下:

Redis緩存穿透和緩存雪崩的概念是什么

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

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

這個形式很簡單。

2、緩存空對象

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


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

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

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

二、緩存雪崩

1、概念

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


2、解決方案

(1)redis高可用

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

(2)限流降級

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

(3)數據預熱

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

關于“Redis緩存穿透和緩存雪崩的概念是什么”這篇文章的內容就介紹到這里,感謝各位的閱讀!相信大家對“Redis緩存穿透和緩存雪崩的概念是什么”知識都有一定的了解,大家如果還想學習更多知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

宁河县| 杭锦后旗| 古田县| 双流县| 余姚市| 寿阳县| 蓬溪县| 锡林郭勒盟| 镇赉县| 兰考县| 陇西县| 兰西县| 武陟县| 太白县| 正蓝旗| 东莞市| 平武县| 吉木萨尔县| 博爱县| 名山县| 乌兰浩特市| 安丘市| 望谟县| 兴山县| 驻马店市| 浦江县| 原平市| 游戏| 晴隆县| 鹤峰县| 友谊县| 东乌| 邵东县| 宁蒗| 琼海市| 武川县| 梁河县| 准格尔旗| 万山特区| 公主岭市| 德庆县|