redis產(chǎn)生雪崩的解決方法?這個(gè)問題可能是我們?nèi)粘W(xué)習(xí)或工作經(jīng)常見到的。希望通過這個(gè)問題能讓你收獲頗深。下面是小編給大家?guī)淼膮⒖純?nèi)容,讓我們一起來看看吧!

產(chǎn)生雪崩的原因:
緩存雪崩通俗簡(jiǎn)單的理解就是:由于原有緩存失效(或者數(shù)據(jù)未加載到緩存中),新緩存未到期間(緩存正常從Redis中獲取,如下圖)所有原本應(yīng)該訪問緩存的請(qǐng)求都去查詢數(shù)據(jù)庫(kù)了,而對(duì)數(shù)據(jù)庫(kù)CPU和內(nèi)存造成巨大壓力,嚴(yán)重的會(huì)造成數(shù)據(jù)庫(kù)宕機(jī),造成系統(tǒng)的崩潰。
基本解決思路如下:
第一,大多數(shù)系統(tǒng)設(shè)計(jì)者考慮用加鎖或者隊(duì)列的方式保證來保證不會(huì)有大量的線程對(duì)數(shù)據(jù)庫(kù)一次性進(jìn)行讀寫,避免緩存失效時(shí)對(duì)數(shù)據(jù)庫(kù)造成太大的壓力,雖然能夠在一定的程度上緩解了數(shù)據(jù)庫(kù)的壓力但是與此同時(shí)又降低了系統(tǒng)的吞吐量。
第二,分析用戶的行為,盡量讓緩存失效的時(shí)間均勻分布。
第三,如果是因?yàn)槟撑_(tái)緩存服務(wù)器宕機(jī),可以考慮做主備,比如:redis主備,但是雙緩存涉及到更新事務(wù)的問題,update可能讀到臟數(shù)據(jù),需要好好解決。
Redis雪崩效應(yīng)的解決方案:
1、可以使用分布式鎖,單機(jī)版的話本地鎖
2、消息中間件方式
3、一級(jí)和二級(jí)緩存Redis+Ehchache
4、均攤分配Redis的key的失效時(shí)間
解釋:
1、 當(dāng)突然有大量請(qǐng)求到數(shù)據(jù)庫(kù)服務(wù)器時(shí)候,進(jìn)行請(qǐng)求限制。使用所的機(jī)制,保證只有一個(gè)線程(請(qǐng)求)操作。否則進(jìn)行排隊(duì)等待(集群分布式鎖,單機(jī)本地鎖)。減少服務(wù)器吞吐量,效率低。
加入鎖!

保證只能有一個(gè)線程進(jìn)入 實(shí)際上只能有一個(gè)請(qǐng)求在執(zhí)行查詢操作
也可以在此處進(jìn)行使用限流的策略~
2、使用消息中間件解決
這種方案是最靠譜的方案!
消息中間件可以解決高并發(fā)!!!
如果大量的請(qǐng)求進(jìn)行訪問時(shí)候,Redis沒有值的情況,會(huì)將查詢的結(jié)果存放在消息中間件中(利用了MQ異步步特性)

3、做二級(jí)緩存,A1為原始緩存,A2為拷貝緩存,A1失效時(shí),可以訪問A2,A1緩存失效時(shí)間設(shè)置為短期,A2設(shè)置為長(zhǎng)期(此點(diǎn)為補(bǔ)充)
4、不同的key,設(shè)置不同的過期時(shí)間,讓緩存失效的時(shí)間點(diǎn)盡量均勻。
感謝各位的閱讀!看完上述內(nèi)容,你們對(duì)redis產(chǎn)生雪崩的解決方法大概了解了嗎?希望文章內(nèi)容對(duì)大家有所幫助。如果想了解更多相關(guān)文章內(nèi)容,歡迎關(guān)注創(chuàng)新互聯(lián)網(wǎng)站制作公司行業(yè)資訊頻道。
當(dāng)前標(biāo)題:redis產(chǎn)生雪崩的解決方法-創(chuàng)新互聯(lián)
轉(zhuǎn)載來于:http://chinadenli.net/article16/dpphdg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、外貿(mào)建站、網(wǎng)站制作、網(wǎng)站策劃、品牌網(wǎng)站設(shè)計(jì)、用戶體驗(yàn)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容