久久久精品一区ed2k-女人被男人叉到高潮的视频-中文字幕乱码一区久久麻豆樱花-俄罗斯熟妇真实视频

Redis緩存穿透、緩存擊穿、緩存雪崩、熱點Key的示例分析

這篇文章將為大家詳細講解有關(guān)redis緩存穿透、緩存擊穿、緩存雪崩、熱點Key的示例分析,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)是一家專業(yè)提供臨潭企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站建設(shè)、網(wǎng)站制作、html5、小程序制作等業(yè)務(wù)。10年已為臨潭眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進行中。

使用Redis難免會遇到Redis緩存穿透,緩存擊穿,緩存雪崩,熱點Key的問題。有些同學(xué)可能只是會用Redis來存取,基本都是用項目里封裝的工具類來操作。但是作為開發(fā),我們使用Redis時可能會遇到上述問題,可能你還不知道這幾個名詞是什么意思,那么現(xiàn)在就讓我們一起來探討下吧。

首先我們使用Redis的邏輯是這樣的

Redis緩存穿透、緩存擊穿、緩存雪崩、熱點Key的示例分析

緩存穿透

是針對數(shù)據(jù)庫和緩存中都沒有的數(shù)據(jù)。場景:當(dāng)客戶端發(fā)起查詢時,緩存中沒有就會去查庫,庫里也沒有,就會返回給客戶端錯誤信息。這樣是沒問題的,看起來邏輯是完美的,但是這里存在一個漏洞,那就是無論什么樣的Key過來查,我們都去接受它的請求,這就可能會被黑客抓住,發(fā)起大量請求,并且Key都是我們系統(tǒng)中沒有的,庫里也查不到對應(yīng)的值,這樣的Key稱之為非法Key。那么當(dāng)大量這樣的請求過來時是不是都不會命中Redis,然后都會打到DB上,當(dāng)DB瞬時接收到如此多的連接時,DB就有可能撐不住,掛掉。這就是存在的一個隱藏的漏洞,黑客或者惡意攻擊者就會抓住這一點攻擊你的系統(tǒng),使你的系統(tǒng)癱瘓。

實際開發(fā)中就要考慮到這一點,可以在系統(tǒng)層面加一層過濾,將系統(tǒng)認為非法的key進行一次攔截,直接返回給客戶端錯誤信息。具體這層過濾怎么加,哪些是非法Key要根據(jù)實際的業(yè)務(wù)邏輯來定,這里只給出解決思路。

緩存擊穿

是針對緩存中沒有但數(shù)據(jù)庫有的數(shù)據(jù)。場景是,當(dāng)Key失效后,假如瞬間突然涌入大量的請求,來請求同一個Key,這些請求不會命中Redis,都會請求到DB,導(dǎo)致數(shù)據(jù)庫壓力過大,甚至扛不住,掛掉。

這個問題的解決辦法就是:

1、設(shè)置熱點Key,自動檢測熱點Key,將熱點Key的過期時間加大或者設(shè)置為永不過期,或者設(shè)置為邏輯上永不過期,具體設(shè)置方法待會說。

2、加互斥鎖。當(dāng)發(fā)現(xiàn)沒有命中Redis,去查數(shù)據(jù)庫的時候,在執(zhí)行更新緩存的操作上加鎖,誰拿到鎖誰去更新,同時在拿到鎖之后先從緩存再獲取一次如果有就返回,沒有就查庫然后更新。(雙重校驗)

緩存雪崩

是指大量Key同時失效,對這些Key的請求又會打到DB上,同樣會導(dǎo)致數(shù)據(jù)庫壓力過大甚至掛掉。

這個問題的解決辦法就是,讓Key的失效時間分散開,可以在統(tǒng)一的失效時間上再加一個隨機值,或者使用更高級的算法分散失效時間。

熱點Key問題

針對熱點數(shù)據(jù),我們可以設(shè)置熱點Key的過期時間很大,或者在邏輯上永不過期。啥意思呢?

意思就是說,假如我們設(shè)置熱點數(shù)據(jù)過期時間為24小時,那么我們可以使用監(jiān)聽器去監(jiān)聽這熱點數(shù)據(jù),當(dāng)檢測到它快要過期時,異步起個線程去更新這個熱點數(shù)據(jù)??梢赃_到邏輯上永不過期的效果。

另外一點,我們要有熱點數(shù)據(jù)自動檢測機制。即有個監(jiān)控平臺,來監(jiān)控每個key某個時間段的請求次數(shù),過期次數(shù),查庫次數(shù),來分析這個key是不是熱點數(shù)據(jù),當(dāng)達到某閾值時將key升級為熱點key,然后走熱點數(shù)據(jù)的邏輯。

這里只提供思路,具體怎么實現(xiàn)不再贅述。如果有更好的辦法,歡迎留言交流。

關(guān)于“Redis緩存穿透、緩存擊穿、緩存雪崩、熱點Key的示例分析”這篇文章就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,使各位可以學(xué)到更多知識,如果覺得文章不錯,請把它分享出去讓更多的人看到。

文章標(biāo)題:Redis緩存穿透、緩存擊穿、緩存雪崩、熱點Key的示例分析
標(biāo)題來源:http://www.sd-ha.com/article0/jgijoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供網(wǎng)站制作、微信小程序、網(wǎng)站排名用戶體驗企業(yè)網(wǎng)站制作

廣告

聲明:本網(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)

h5響應(yīng)式網(wǎng)站建設(shè)