這篇文章主要介紹redis緩存穿透的解決方法,文中介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們一定要看完!
在萊山等地區(qū),都構(gòu)建了全面的區(qū)域性戰(zhàn)略布局,加強發(fā)展的系統(tǒng)性、市場前瞻性、產(chǎn)品創(chuàng)新能力,以專注、極致的服務(wù)理念,為客戶提供成都網(wǎng)站建設(shè)、網(wǎng)站建設(shè) 網(wǎng)站設(shè)計制作按需定制設(shè)計,公司網(wǎng)站建設(shè),企業(yè)網(wǎng)站建設(shè),成都品牌網(wǎng)站建設(shè),成都全網(wǎng)營銷,成都外貿(mào)網(wǎng)站建設(shè),萊山網(wǎng)站建設(shè)費用合理。
緩存技術(shù)可以用來減輕數(shù)據(jù)庫的壓力,提升訪問效率。目前在企業(yè)項目中對緩存也是越來越重視。但是緩存不是說隨隨便便加入項目就可以了。將緩存整合到項目中,這才是第一步。而緩存帶來的穿透問題,進(jìn)而導(dǎo)致的雪蹦問題都是我們迫切需要解決的問題。本篇文章將我平時項目中的解決方案分享給大家,以供參考。
緩存的正常使用如圖:
如圖所示,緩存的使用流程:
1、先從緩存中取數(shù)據(jù),如果能取到,則直接返回數(shù)據(jù)給用戶。這樣不用訪問數(shù)據(jù)庫,減輕數(shù)據(jù)庫的壓力。
2、如果緩存中沒有數(shù)據(jù),就會訪問數(shù)據(jù)庫。
這里面就會存在一個BUG,如圖:
如圖,緩存就像是數(shù)據(jù)庫的一道防火墻,將請求比較頻繁的數(shù)據(jù)放到緩存中,從而減輕數(shù)據(jù)庫的壓力。 但是如果有人惡意攻擊,那就很輕松的穿透你的緩存,將所有的壓力都給數(shù)據(jù)庫。比如上圖,你緩存的key都是正整數(shù),但是我偏偏使用負(fù)數(shù)作為key訪問你的緩存,這樣就會導(dǎo)致穿透緩存,將壓力直接給數(shù)據(jù)庫。
緩存穿透的問題,肯定是再大并發(fā)情況下。依此為前提,我們分析緩存穿透的原因如下:
1、惡意攻擊,猜測你的key命名方式,然后估計使用一個你緩存中不會有的key進(jìn)行訪問。
2、第一次數(shù)據(jù)訪問,這時緩存中還沒有數(shù)據(jù),則并發(fā)場景下,所有的請求都會壓到數(shù)據(jù)庫。
3、數(shù)據(jù)庫的數(shù)據(jù)也是空,這樣即使訪問了數(shù)據(jù)庫,也是獲取不到數(shù)據(jù),那么緩存中肯定也沒有對應(yīng)的數(shù)據(jù)。這樣也會導(dǎo)致穿透。
緩存穿透在于一步步規(guī)避穿透的原因,如圖:
如上圖所示,解決的步驟如下:
1、再web服務(wù)器啟動時,提前將有可能被頻繁并發(fā)訪問的數(shù)據(jù)寫入緩存?!@樣就規(guī)避大量的請求在第3步出現(xiàn)排隊阻塞。
2、規(guī)范key的命名,并且統(tǒng)一緩存查詢和寫入的入口。這樣,在入口處,對key的規(guī)范進(jìn)行檢測。–這樣保存惡意的key被攔截。
3、Synchronized雙重檢測機制,這時我們就需要使用同步(Synchronized)機制,在同步代碼塊前查詢一下緩存是否存在對應(yīng)的key,然后同步代碼塊里面再次查詢緩存里是否有要查詢的key。 這樣“雙重檢測”的目的,還是避免并發(fā)場景下導(dǎo)致的沒有意義的數(shù)據(jù)庫的訪問(也是一種嚴(yán)格避免穿透的方案)。
這一步會導(dǎo)致排隊,但是第一步中我們說過,為了避免大量的排隊,可以提前將可以預(yù)知的大量請求提前寫入緩存。
4、不管數(shù)據(jù)庫中是否有數(shù)據(jù),都在緩存中保存對應(yīng)的key,值為空就行。–這樣是為了避免數(shù)據(jù)庫中沒有這個數(shù)據(jù),導(dǎo)致的平凡穿透緩存對數(shù)據(jù)庫進(jìn)行訪問。
5、第4步中的空值如果太多,也會導(dǎo)致內(nèi)存耗盡。導(dǎo)致不必要的內(nèi)存消耗。這樣就要定期的清理空值的key。避免內(nèi)存被惡意占滿。導(dǎo)致正常的功能不能緩存數(shù)據(jù)。
以上是redis緩存穿透的解決方法的所有內(nèi)容,感謝各位的閱讀!希望分享的內(nèi)容對大家有幫助,更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道!
當(dāng)前名稱:redis緩存穿透的解決方法
分享URL:http://www.rwnh.cn/article2/pcodoc.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、建站公司、網(wǎng)站維護、網(wǎng)站策劃、網(wǎng)站改版、小程序開發(fā)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)