<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                ## 緩存擊穿 **查詢緩存中失效的 key**。大量的請求同時查詢一個 key 時,此時這個 key 正好失效了,就會導致大量的請求都落到數據庫。 :-: ![緩存擊穿](https://img.kancloud.cn/7f/95/7f95be7ad023fd913f6f9dba6c0b3a98_509x306.png) ### 解決方案 1. 互斥鎖:(基本不用次方案) 如果從redis中沒有獲取到數據,就讓一個線程去數據庫查詢數據,然后構建緩存,其他的線程就等著,過一段時間后再從redis中去獲取。 這個方案能解決問題,但是一個線程構建緩存的時候,另外的線程都在睡眠或者輪詢。 2. 后臺續命: 后臺開一個定時任務,專門主動更新即將過期的數據。 設置 key 的時候同時設置過期時間為 60 分鐘,后臺程序在 55 分鐘時,會查詢數據庫并重新緩存60分鐘 3. 永不過期 對熱點數據不設置過期時間 ## 緩存穿透 要訪問的數據緩存中沒有,再查詢數據庫,還是沒有。短時間,高密度的訪問此數據,給持久層數據庫造成很大的壓力。 :-: ![緩存擊穿](https://img.kancloud.cn/29/d4/29d4806090c935800acacf31886ff561_531x324.png) ### 解決方案 1. 緩存空對象 在數據庫即使查到的是空對象,也把空對象緩存起來。 如果在某個時間,緩存為空的記錄,在數據庫里面有值了,怎么辦? 1. 設置緩存的時候,同時設置一個過期時間,這樣過期之后,就會重新去數據庫查詢最新的數據并緩存起來 2. 如果對實時性要求非常高的話,那就寫數據庫的時候,同時寫緩存。這樣可以保障實時性 3. 如果對實時性要求不是那么高,那就寫數據庫的時候給消息隊列發一條數據,讓消息隊列再通知處理緩存的邏輯去數據庫取出最新的數據 > 對于惡意攻擊,請求的時候key往往各不相同,且只請求一次,那你要把這些key都緩存起來的話,因為每個key都只請求一次,那還是每次都會請求數據庫,怎么辦?—— 布隆過濾器 2. 布隆過濾器 當布隆過濾器說某個值存在時,這個值可能不存在;當它說不存在時,那就肯定不存在。 利用布隆過濾器先進行校驗,不符合則 丟棄 :-: ![布隆過濾器](https://img.kancloud.cn/18/5c/185c85448d060d2e97dc5a390e22a189_679x321.png) ## 緩存雪崩 緩存中大多數的數據在**同一時間過期**,而查詢數據量巨大,這時候,又是緩存中沒有,數據庫中有的情況了。請求都打到數據庫上,引起數據庫流量激增,壓力瞬間增大,直接崩潰。 ### 解決方案 1. 互斥鎖 2. 錯峰過期 在設置 key 過期時間的時候,加入一個隨機過期時間,可以避免大量緩存同時過期 3. 緩存集群 4. 限流器+本地緩存
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看