<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緩存中【緩存穿透、緩存擊穿、緩存雪崩】解決方案

          共 1418字,需瀏覽 3分鐘

           ·

          2020-12-20 13:39

          走過路過不要錯過

          點擊藍(lán)字關(guān)注我們

          1.前言

          當(dāng)我們設(shè)計一個Redis緩存服務(wù)時,緩存穿透、緩存擊穿、緩存雪崩這三大問題我們不得不考慮。同時參見面試時面試官也會常問這三大問題。本章我們來分析一下這三大問題。

          2.緩存穿透

          2.1什么叫緩存穿透?

          • 正常情況下,查詢數(shù)據(jù)無論在緩存中或者數(shù)據(jù)庫中,都應(yīng)該有這樣的數(shù)據(jù)。但如果這個數(shù)據(jù)在緩存和數(shù)據(jù)庫都?不存在?,那么用戶高并發(fā)環(huán)境下訪問?數(shù)據(jù)庫?和?緩存?中都?不存在的數(shù)據(jù)?稱之為緩存穿透現(xiàn)象.

          2.2穿透帶來的問題

          • 如果有些不懷好意的人,利用這個不存在的數(shù)據(jù),頻繁大量的訪問你的數(shù)據(jù)庫,產(chǎn)生大量的請求,極有可能導(dǎo)致你的數(shù)據(jù)庫異常訪問不了、數(shù)據(jù)庫宕掉。

          2.3解決方案

          1). 禁用IP 限制IP訪問.

          2). 限流 每秒最多訪問3次

          3).?布隆過濾器?(常見解決方案)

          4).?緩存空值?(簡單粗暴)

          • 布隆過濾器

            • 布隆過濾器(Bloom Filter)是1970年由布隆提出的。它實際上是一個?很長的二進(jìn)制向量和一系列隨機(jī)映射函數(shù)?。布隆過濾器可以?用于檢索一個元素是否在一個集合中?。它的優(yōu)點是空間效率和查詢時間都比一般的算法要好的多,缺點是有一定的誤識別率和刪除困難。

            • 原理

            • 缺點:

            • 由于?hash碰撞問題?,可能由多個key有相同的位置,所以得出結(jié)論,布隆過濾器認(rèn)為數(shù)據(jù)存在,那么數(shù)據(jù)可能存在.如果布隆過濾器認(rèn)為數(shù)據(jù)不存在,則數(shù)據(jù)一定不在.

            • 解決方案

            • 1.擴(kuò)容二進(jìn)制向量位數(shù).

            • 2.增加hash函數(shù)的個數(shù)

            • 當(dāng)位數(shù)增加/函數(shù)適當(dāng)增加,則可以有效的降低hash碰撞的幾率. 默認(rèn)值 0.03

          • 緩存空值

            • 這個方案簡單粗暴,就是拿到這些不存在數(shù)據(jù)key,并把value設(shè)置成null放到緩存中去,后面再請求這樣的數(shù)據(jù)直接到緩存查詢,返回給它null就可以了,切記也要給這些不存在數(shù)據(jù)的key設(shè)置失效時間。

          3.緩存擊穿

          3.1什么叫緩存擊穿?

          • 在高并發(fā)的環(huán)境下,大量請求同時請求同一個key,如果恰巧這個時候key失效了。那么當(dāng)某個熱點數(shù)據(jù)在緩存中?突然失效?.導(dǎo)致大量的用戶直接訪問數(shù)據(jù)庫.導(dǎo)致并發(fā)壓力過高造成異常這個現(xiàn)象被稱為?緩存擊穿

          3.2擊穿帶來的問題

          • 造成某個時刻所有訪問直接打在數(shù)據(jù)庫上,導(dǎo)致數(shù)據(jù)庫壓力劇增

          3.3解決方案

          1.盡可能將熱點數(shù)據(jù)的超時時間 設(shè)定的長一點

          2.設(shè)定多級緩存 超時時間采用隨機(jī)算法.

          4.緩存雪崩

          4.1什么叫緩存雪崩?

          • 在緩存服務(wù)器中,由于大量的緩存數(shù)據(jù)失效,導(dǎo)致用戶訪問的命中率過低.導(dǎo)致直接訪問數(shù)據(jù)庫.例如緩存服務(wù)宕機(jī),然后大量請求直接訪問數(shù)據(jù)庫,極有導(dǎo)致數(shù)據(jù)庫也宕機(jī).

          4.2雪崩帶來的問題

          導(dǎo)致緩存、數(shù)據(jù)庫等一系列服務(wù)宕機(jī)..

          4.3解決方案

          1. 使用集群緩存,保證緩存服務(wù)的高可用

          2. 設(shè)定超時時間時,應(yīng)該采用隨機(jī)算法




          往期精彩推薦



          騰訊、阿里、滴滴后臺面試題匯總總結(jié) — (含答案)

          面試:史上最全多線程面試題 !

          最新阿里內(nèi)推Java后端面試題

          JVM難學(xué)?那是因為你沒認(rèn)真看完這篇文章


          END


          關(guān)注作者微信公眾號 —《JAVA爛豬皮》


          了解更多java后端架構(gòu)知識以及最新面試寶典


          你點的每個好看,我都認(rèn)真當(dāng)成了


          看完本文記得給作者點贊+在看哦~~~大家的支持,是作者源源不斷出文的動力

          瀏覽 57
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報
          <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>
                  久成人三级电影 | 成人视频在线观看视频在线观看黄色 | 一本大道无码人妻 | 无码高清视频 | 色婷婷一区二区三区 |