Redis快取穿透 快取雪崩 快取擊穿

2022-02-07 19:28:40 字數 942 閱讀 2408

快取穿透:使用者惡意模擬請求很多快取中不存在的資料,由於快取中沒有,資料庫中也沒有,大量的請求就會直接落在了資料庫上,導致資料庫出現異常

解決辦法:

1.對接口進行限流,單個使用者每分鐘請求多少次

2.如果查詢的資料為空,那麼設定乙個預設值到快取中,這樣第二次請求就會落到快取中,而不會落到資料庫;

//偽**

public object get(string key)else

}else

return value;

}

快取雪崩是指設定快取時候設定了相同時間,快取某一時刻全部失效,導致請求全部**到資料庫,資料庫順間壓力過程導致雪崩(崩潰)

解決方案:

1.設定熱點資料永不過期

2.快取資料的過期時間設定為隨機,這樣過期的重複率就會降低

快取擊穿是快取中沒有資料但是資料庫中有資料(一般是由於key過期導致),這時由於併發使用者特別多,同時讀取快取沒有讀取到資料,同時去資料庫讀取資料 ,導致資料庫壓力瞬間增大

快取擊穿與快取雪崩的區別是擊穿是針對某乙個key雪崩是針對很多key

解決方案:

1.對於熱點的資料設定為永不過期

2.使用互斥鎖,通常使用redis的setnx

public string get(string key)else

}//快取中有資料直接返回

return value;

}

Redis快取穿透 快取雪崩

把redis作為快取使用已經是司空見慣,但是使用redis後也可能會碰到一系列的問題,尤其是資料量很大的時候,經典的幾個問題如下 一 快取和資料庫間資料一致性問題 分布式環境下 單機就不用說了 非常容易出現快取和資料庫間的資料一致性問題,針對這一點的話,只能說,如果你的專案對快取的要求是強一致性的,...

Redis 快取穿透 快取雪崩

目錄 1.快取穿透 如何避免?如何選擇?2 快取擊穿 如何解決 3.快取雪崩 如何解決?快取穿透 一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 一些惡意的請求會故意查詢不存在的key,請求量很大,就會對後端系統造成很大的壓力,或導致資料庫異常。...

redis快取穿透 快取雪崩

什麼是快取雪崩 在同一時間內大量的快取資料失效,大量的請求都會去資料庫查詢,造成快取雪崩。解決方法 這個沒有完美的解決方法,但是可以分析使用者行為,盡量讓失效時間點均勻分布,還有就是在快取失效後,通過加鎖或者佇列來控制讀資料庫寫快取的執行緒數量,比如對某國key只允許乙個執行緒查詢資料庫和快取,其他...