<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          Redis緩存穿透&雪崩

          共 1641字,需瀏覽 4分鐘

           ·

          2021-07-12 22:31

          點(diǎn)擊上方藍(lán)色字體,選擇“標(biāo)星公眾號(hào)”

          優(yōu)質(zhì)文章,第一時(shí)間送達(dá)

          緩存穿透

          概念

          用戶如果想查詢一個(gè)數(shù)據(jù),會(huì)先在redis內(nèi)存數(shù)據(jù)庫中進(jìn)行查詢,redis中沒有,再向持久層數(shù)據(jù)庫中查詢。

          緩存穿透的概念很簡單,用戶想要查詢一個(gè)數(shù)據(jù),發(fā)現(xiàn)redis內(nèi)存數(shù)據(jù)庫沒有,也就是緩存沒有命中,于是向持久層數(shù)據(jù)庫查詢。發(fā)現(xiàn)也沒有,于是本次查詢失敗。當(dāng)用戶很多的時(shí)候,緩存都沒有命中,于是都去請(qǐng)求了持久層數(shù)據(jù)庫。這會(huì)給持久層數(shù)據(jù)庫造成很大的壓力,甚至直接導(dǎo)致崩潰。這時(shí)候就相當(dāng)于出現(xiàn)了緩存穿透

          解決方案

          1.布隆過濾器

          布隆過濾器是一種數(shù)據(jù)結(jié)構(gòu),對(duì)所有可能查詢的參數(shù)以hash形式存儲(chǔ),在控制層先進(jìn)行校驗(yàn) ,不符合則丟棄,從而避免了對(duì)底層存儲(chǔ)系統(tǒng)的查詢壓力;

          2.緩存空對(duì)象

          當(dāng)存儲(chǔ)層不命中后,即使返回的空對(duì)象也將其緩存起來,同時(shí)會(huì)設(shè)置一個(gè)過期時(shí)間,之后再訪問這個(gè)數(shù)據(jù)將會(huì)從緩存中獲取,保護(hù)了后端數(shù)據(jù)源;

          但是這種方法會(huì)存在兩個(gè)問題:

          1. 如果空值能夠被緩存起來,這就意味著緩存需要更多的空間存儲(chǔ)更多的鍵,因?yàn)檫@當(dāng)中可能會(huì)有很多的空值的鍵;

          2. 即使對(duì)空值設(shè)置了過期時(shí)間,還是會(huì)存在緩存層和存儲(chǔ)層的數(shù)據(jù)會(huì)有一段時(shí)間窗口的不一致,這對(duì)于需要保持一致性的業(yè)務(wù)會(huì)有影響。

          緩存擊穿

          概念

          這里需要注意和緩存穿透的區(qū)別:

          緩存擊穿,是指一個(gè)key非常熱點(diǎn),大并發(fā)集中對(duì)這一個(gè)點(diǎn)進(jìn)行訪問,當(dāng)這個(gè)key在失效的瞬間,持續(xù)的大并發(fā)就穿破緩存,直接請(qǐng)求數(shù)據(jù)庫,就像在一個(gè)屏障上鑿開了一個(gè)洞。由于緩存過期,會(huì)同時(shí)訪問數(shù)據(jù)庫來查詢最新數(shù)據(jù),并且回寫緩存,會(huì)導(dǎo)使數(shù)據(jù)庫瞬間壓力過大。

          解決方案

          1.設(shè)置熱點(diǎn)數(shù)據(jù)永不過期

          從緩存層面來看,沒有設(shè)置過期時(shí)間,所以不會(huì)出現(xiàn)熱點(diǎn)key過期后產(chǎn)生的問題。

          2.加互斥鎖

          分布式鎖:使用分布式鎖,保證對(duì)于每個(gè)key同時(shí)只有一個(gè)線程去查詢后端服務(wù),其他線程沒有獲得分布式鎖的權(quán)限,因此只需要等待即可。這種方式將高并發(fā)的壓力轉(zhuǎn)移到了分布式鎖,因此對(duì)分布式鎖的考驗(yàn)很大。

          緩存雪崩

          概念

          緩存雪崩,是指在某一個(gè)時(shí)間段,緩存集中過期失效。

          產(chǎn)生雪崩的原因之一,有一部分東西在redis中集中過期了,而對(duì)這些東西的訪問查詢,都落到了數(shù)據(jù)庫上,對(duì)于數(shù)據(jù)庫而言,就會(huì)產(chǎn)生周期性的壓力波峰。于是所有的請(qǐng)求都會(huì)達(dá)到存儲(chǔ)層,存儲(chǔ)層的調(diào)用量會(huì)暴增,造成存儲(chǔ)層也會(huì)掛掉的情況

          其實(shí)集中過期,倒不是非常致命,比較致命的緩存雪崩,是緩存服務(wù)器某個(gè)節(jié)點(diǎn)容機(jī)或斷網(wǎng)

          因?yàn)?strong>自然形成的緩存雪崩,一定是在某個(gè)時(shí)間段集中創(chuàng)建緩存,這個(gè)時(shí)候,數(shù)據(jù)庫也是可以頂住壓力的。無非就是對(duì)數(shù)據(jù)庫產(chǎn)生周期性的壓力而已。

          緩存服務(wù)節(jié)點(diǎn)的宕機(jī),對(duì)數(shù)據(jù)庫服務(wù)器造成的壓力是不可預(yù)知的,很有可能瞬間就把數(shù)據(jù)庫壓垮。

          解決方案

          1.redis高可用

          這個(gè)思想的含義是,既然redis有可能掛掉,那可以多增設(shè)幾臺(tái)redis,這樣一臺(tái)掛掉之后其他的還可以繼續(xù)工作,其實(shí)就是搭建的集群

          2.限流降級(jí)

          這個(gè)解決方案的思想是,在緩存失效后,通過加鎖或者隊(duì)列來控制讀數(shù)據(jù)庫寫緩存的線程數(shù)量。比如對(duì)某個(gè)key只允許一個(gè)線程查詢數(shù)據(jù)和寫緩存,其他線程等待。

          3.數(shù)據(jù)預(yù)熱

          數(shù)據(jù)加熱的含義就是在正式部署之前,我先把可能的數(shù)據(jù)先預(yù)先訪問一遍,這樣部分可能大量訪問的數(shù)據(jù)就會(huì)加載到緩存中。在即將發(fā)生大并發(fā)訪問前手動(dòng)觸發(fā)加載緩存不同的key,設(shè)置不同的過期時(shí)間,讓緩存失效的時(shí)間點(diǎn)盡量均勻。


            作者 |  MoYu-zc

          來源 |  urlify.cn/ri2eMf







          瀏覽 40
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  国产美女精品视频国产 | 高清日本大陆欧美 | 羞羞操人视频 | 免费视频一区二区三区四区 | 免费黄色成人网站 |