91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

redis緩存雪崩和緩存穿透的解決方法

發布時間:2020-06-23 20:12:15 來源:億速云 閱讀:171 作者:元一 欄目:關系型數據庫

redis緩存雪崩和緩存穿透的怎么解決?相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。

緩存穿透

緩存穿透是指查詢一個一定不存在的數據。由于緩存不命中,并且出于容錯考慮,如果從數據庫查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到數據庫去查詢,失去了緩存的意義。即請求的數據在緩存大量不命中,導致請求走數據庫。

redis緩存雪崩和緩存穿透的解決方法

解決方案

布隆過濾

對所有可能查詢的參數以hash形式存儲,在控制層先進行校驗,不符合則丟棄,從而避免了對底層存儲系統的查詢壓力;

緩存空對象

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

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

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

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

緩存雪崩

我們都知道Redis不可能把所有的數據都緩存起來(內存昂貴且有限),所以Redis需要對數據設置過期時間,將已經過期的鍵值對刪除,它采用的是惰性刪除+定期刪除兩種策略對過期鍵刪除。

如果緩存數據設置的過期時間是相同的,并且Redis恰好將這部分數據全部刪光了。這就會導致在這段時間內,這些緩存同時失效,全部請求到數據庫中。

Redis掛掉了,請求全部走數據庫。
對緩存數據設置相同的過期時間,導致某段時間內緩存失效,請求全部走數據庫。

redis緩存雪崩和緩存穿透的解決方法

解決方案

保證緩存層服務高可用性

即使個別節點、個別機器、甚至是機房宕掉,依然可以提供服務,比如 Redis Sentinel 和 Redis Cluster 都實現了高可用。

依賴隔離組件為后端限流并降級

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

數據預熱

可以通過緩存reload機制,預先去更新緩存,再即將發生大并發訪問前手動觸發加載緩存不同的key,設置不同的過期時間,讓緩存失效的時間點盡量均勻。

看完上述內容,你們掌握redis緩存雪崩和緩存穿透的解決方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!

向AI問一下細節

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

AI

闸北区| 黑水县| 赞皇县| 二连浩特市| 东乡族自治县| 平邑县| 安阳市| 伊春市| 东光县| 芒康县| 丰县| 东港市| 平果县| 铁岭市| 亳州市| 新平| 咸丰县| 赫章县| 军事| 五台县| 永丰县| 古丈县| 江孜县| 固原市| 大城县| 高雄市| 丰宁| 尖扎县| 仁化县| 菏泽市| 新绛县| 武乡县| 洛扎县| 沾益县| 临朐县| 余干县| 霍州市| 岳阳市| 乌拉特后旗| 建水县| 安义县|