redis產生雪崩的解決方法?這個問題可能是我們日常學習或工作經常見到的。希望通過這個問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純热荩屛覀円黄饋砜纯窗桑?/p>
成都創(chuàng)新互聯(lián)公司主營澤州網站建設的網絡公司,主營網站建設方案,成都App制作,澤州h5微信小程序定制開發(fā)搭建,澤州網站營銷推廣歡迎澤州等地區(qū)企業(yè)咨詢
產生雪崩的原因:
緩存雪崩通俗簡單的理解就是:由于原有緩存失效(或者數(shù)據(jù)未加載到緩存中),新緩存未到期間(緩存正常從Redis中獲取,如下圖)所有原本應該訪問緩存的請求都去查詢數(shù)據(jù)庫了,而對數(shù)據(jù)庫CPU和內存造成巨大壓力,嚴重的會造成數(shù)據(jù)庫宕機,造成系統(tǒng)的崩潰。
基本解決思路如下:
第一,大多數(shù)系統(tǒng)設計者考慮用加鎖或者隊列的方式保證來保證不會有大量的線程對數(shù)據(jù)庫一次性進行讀寫,避免緩存失效時對數(shù)據(jù)庫造成太大的壓力,雖然能夠在一定的程度上緩解了數(shù)據(jù)庫的壓力但是與此同時又降低了系統(tǒng)的吞吐量。
第二,分析用戶的行為,盡量讓緩存失效的時間均勻分布。
第三,如果是因為某臺緩存服務器宕機,可以考慮做主備,比如:redis主備,但是雙緩存涉及到更新事務的問題,update可能讀到臟數(shù)據(jù),需要好好解決。
Redis雪崩效應的解決方案:
1、可以使用分布式鎖,單機版的話本地鎖
2、消息中間件方式
3、一級和二級緩存Redis+Ehchache
4、均攤分配Redis的key的失效時間
解釋:
1、 當突然有大量請求到數(shù)據(jù)庫服務器時候,進行請求限制。使用所的機制,保證只有一個線程(請求)操作。否則進行排隊等待(集群分布式鎖,單機本地鎖)。減少服務器吞吐量,效率低。
加入鎖!
保證只能有一個線程進入 實際上只能有一個請求在執(zhí)行查詢操作
也可以在此處進行使用限流的策略~
2、使用消息中間件解決
這種方案是最靠譜的方案!
消息中間件可以解決高并發(fā)!!!
如果大量的請求進行訪問時候,Redis沒有值的情況,會將查詢的結果存放在消息中間件中(利用了MQ異步步特性)
3、做二級緩存,A1為原始緩存,A2為拷貝緩存,A1失效時,可以訪問A2,A1緩存失效時間設置為短期,A2設置為長期(此點為補充)
4、不同的key,設置不同的過期時間,讓緩存失效的時間點盡量均勻。
感謝各位的閱讀!看完上述內容,你們對redis產生雪崩的解決方法大概了解了嗎?希望文章內容對大家有所幫助。如果想了解更多相關文章內容,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道。
本文題目:redis產生雪崩的解決方法
轉載來源:http://vcdvsql.cn/article34/pepose.html
成都網站建設公司_創(chuàng)新互聯(lián),為您提供面包屑導航、小程序開發(fā)、云服務器、定制網站、網站設計公司、企業(yè)網站制作
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)