redis 的雪崩、擊穿、穿透

緩存雪崩:redis中的很多key過期時間相同,過期時間到了之後,大量數據訪問redis,然後redis訪問數據庫,redis受不了了,相當於緩存被擊穿了

解決方案:

1、不要把大量的數據的超時時間設爲同一個時間點,加個隨機值

2、熱點數據永遠不過期

3、緩存數據庫分佈式部署

 

緩存擊穿:一個key在失效的時刻,大量請求這個key,直接訪問到數據中

解決方案:

1、熱點數據永遠不過期

2、加互斥鎖

 

緩存穿透:大量獲取緩存中不存在key的value,導致大量數據直接訪問數據庫

解決方案:

1、採用布隆過濾器,使用一個足夠大的bitmap,用於存儲可能訪問的key,不存在的key直接被過濾;

2、攔截器,id<=0的直接攔截。

3、從cache和db都取不到,可以將key-value寫爲key-null,設置較短過期時間,如30秒(設置太長會導致正常情況也沒法使用)。這樣可以防止攻擊用戶反覆用同一個id暴力攻擊。

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