您好,登錄后才能下訂單哦!
這篇文章主要介紹了redis雪崩指的是什么,具有一定借鑒價值,需要的朋友可以參考下。希望大家閱讀完這篇文章后大有收獲。下面讓小編帶著大家一起了解一下。
什么是雪崩?
因為緩存層承載了大量的請求,有效的保護了存儲層,但是如果緩存由于某些原因,整體不能夠提供服務,于是所有的請求,就會到達存儲層,存儲層的調用量就會暴增,造成存儲層也會掛掉的情況。緩存雪崩的英文解釋是奔逃的野牛,指的是緩存層當掉之后,并發流量會像奔騰的野牛一樣,大量訪問后端存儲。
緩存雪崩通俗簡單的理解就是:由于原有緩存失效(或者數據未加載到緩存中),新緩存未到期間(緩存正常從Redis中獲取,如下圖)所有原本應該訪問緩存的請求都去查詢數據庫了,而對數據庫CPU和內存造成巨大壓力,嚴重的會造成數據庫宕機,造成系統的崩潰。
緩存失效的時候如下圖:
存在這種問題的一個場景是:當緩存服務器重啟或者大量緩存集中在某一個時間段失效,這樣在失效的時候,大量數據會去直接訪問DB,此時給DB很大的壓力。
緩存失效時的雪崩效應對底層系統的沖擊非常可怕!那有什么辦法來解決這個問題呢?
解決方法
1)、設置redis集群和DB集群的高可用,如果redis出現宕機情況,可以立即由別的機器頂替上來。這樣可以防止一部分的風險。
2)、使用互斥鎖
在緩存失效后,通過加鎖或者隊列來控制讀和寫數據庫的線程數量。比如:對某個key只允許一個線程查詢數據和寫緩存,其他線程等待。單機的話,可以使用synchronized或者lock來解決,如果是分布式環境,可以是用redis的setnx命令來解決。
3)、不同的key,可以設置不同的過期時間,讓緩存失效的時間點不一致,盡量達到平均分布。
4)、永遠不過期
redis中設置永久不過期,這樣就保證了,不會出現熱點問題,也就是物理上不過期。
5)、資源保護
使用netflix的hystrix,可以做各種資源的線程池隔離,從而保護主線程池。
感謝你能夠認真閱讀完這篇文章,希望小編分享redis雪崩指的是什么內容對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,遇到問題就找億速云,詳細的解決方法等著你來學習!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。