redis緩存穿透擊穿雪崩

穿透

       原因:  客戶端一直在查數據庫沒有的數據,導致沒有查緩存然後直接到了數據庫。

        解決方式: 1. 布隆過濾器   :預先把數據ID全存在過濾器裏面(實時更新),當在查緩存爲空時,再判斷過濾器裏面有沒                                     有,沒有的話直接返回,有的話再查數據庫 。

                            2. 預存一個空數據然後在擊中的時候進行判斷

         

擊穿

         原因 : 客戶端查一個正好過期的value,大量請求進來沒有查緩存然後直接到了數據庫。

          解決方式 :  1.當緩存沒有數據時,查數據庫的時候加鎖,排隊只有一個線程拿到鎖,然後查數據庫更新緩存。其他線程等                                  待一會,然後再從緩存取。

                                 

                           2.用一個定時器在數據失效的時候定時進行更新

                           3.設置熱點數據永遠不過期

 

雪崩

            原因 :大量緩存到期, 客戶端大量請求,沒有走緩存,直接到數據庫,導致數據庫奔潰。

             解決方式: 1.如擊穿

                               2..分佈式部署緩存  過期時間設置隨機不固定      

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章