1、快取雪崩:是指在某乙個時間段,快取集中過期失效,或者是快取宕機,所有請求全部打到db上。
應對辦法:分散快取過期時間,具體做法是分別設定不同的快取時間,比如加上隨機因子。
2、快取擊穿:當某個熱點key失效時,高併發直接請求資料庫對資料庫伺服器造成壓垮性的壓力,比如爆款商品。
應對辦法:1)熱點資料永不過期。
2)對同乙個熱點資料的更新,只發乙個請求到db。後面的請求用隨機退避方式,失效時隨機 sleep乙個很短的時間,再次查詢。
3、快取穿透:受到攻擊時,攻擊者用不可能存在的key,高頻請求,快取失效,直接打到資料庫,資料庫查詢也沒有該資料。應對辦法:1)增加校驗;2)使用redis的布隆過濾器(bloom filter),就是利用高效的資料結構和演算法快速判斷出這個key是否在資料庫中存在;3)閘道器層(比如nginx)配置單個ip每秒訪問次數閾值。
注意:布隆過濾器會存在誤判,將不在裡面的元素判斷為在裡面。應對措施:如果bloom filter中儲存的是白名單,那麼可以通過建立乙個黑名單來儲存可能會誤判的元素。
快取雪崩 擊穿 穿透
快取擊穿 快取穿透 在同一時間快取資料集體失效,此時大量請求訪問失效資料,導致大量併發直接訪問資料庫造成資料庫壓力 將需要快取的資料進行分散失效處理,將快取的資料的失效時間設定乙個隨機值,避免大量快取資料在同一時間集體失效 將部分經常做查詢且不經常更新的資料的快取時間設定為永不失效 對於統一個key...
redis 快取擊穿 穿透 雪崩
一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就去後端系統查詢 比如db 一些惡意的請求會故意查詢不存在的key,請求量很大,就會對後端系統造成很大的壓力。這就叫做快取穿透。如何避免?1 對查詢結果為空的情況也進行快取,這樣,再次訪問時,快取層會直接返回空值。快取時間設定短一...
關於快取擊穿 穿透 雪崩
前台請求資料,後台先進入緩訪問資料,取到了直接返回給前台,取不到的話再進入資料庫取資料,取到了返回給前台,並且更新快取資料,取不到的話,就返回乙個空值給前台。指的是快取和資料庫中都沒有我們需要的資料,也就是都沒有取到資料的時候,這時候我們返回乙個空值給前台,但是前台偏偏就要這個資料,就會再次傳送請求...