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

2021-10-16 01:24:20 字數 543 閱讀 9991

快取雪崩是指,在某一時刻大量熱點key過期,導致請求大量查詢資料庫,資料庫壓力大。

解決方案

可以給不同的key加上不同的隨機數過期時間,就能有效避免大面積key失效問題。

快取穿透是指請求去查詢資料庫和redis裡沒有的資料,例如黑客可以不斷查詢id為-1的使用者,那麼就會導致伺服器壓力大。

解決方案

對請求引數進行校驗,例如id為-1的直接拒絕請求。

從快取取不到的資料,在資料庫中也沒有取到,這時也可以將對應key的value對寫為null、位置錯誤。

使用布隆過濾器

快取擊穿與快取雪崩類似,不同之處在於,快取雪崩是大量key失效,而快取擊穿是高併發情況下,某乙個key非常熱,但是這個key失效了,在這一小段時間,大量的請求會衝向資料庫,給資料庫帶來壓力。

解決方案

既然是這個key非常熱,那就設定熱點資料永遠不過期。

敖丙redis

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

快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為小於0的資料或id為特別大等不存在的資料。這時的使用者很可能是攻擊者,攻擊會導致資料庫壓力過大。舉例 通過分類id查詢廣告集合 param categoryid 廣告分類id return 廣告集合 public listf...

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

4 總結 一般企業都會用到mysql等關係型資料庫,當訪問量不大的時候還可以支撐 當併發量高的時候,比如商品搶購或者主頁訪問瞬間較大的時候,請求直接到達db,可能會導致系統效能急劇下降以致癱瘓。db是面向磁碟的,磁碟io是比較重的操作,效能較低。為了克服上述的問題,通常需要在客戶端和db之間引入一層...

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

指的是,redis快取中和資料庫中都沒有的資料,使用者不斷向伺服器發起請求,導致資料庫壓力過大。一般的流程查詢流程存在redis快取穿透bug 沒獲取到資料,到資料庫中查詢 如果一直沒獲取和查詢到資料,使用者不斷發起請求,資料庫就會不斷地進行查詢操作,導致資料庫壓力增大,導致快取擊穿。解決方案 阻止...