快取擊穿 雪崩和穿透

2021-10-01 20:12:00 字數 632 閱讀 4077

訪問乙個不存在的key,快取不起作用,請求會穿透到db(資料庫),流量大時db會掛掉

解決方法:

之所以發生穿透,是因為快取中沒有儲存這些資料的key,從而每次都查詢資料庫,我們可以為這些key在快取中設定對應的值為null,後面查詢這個key的時候就不用查詢資料庫了,(訪問key未在db查詢到值,也將空值寫進快取,設定較短過期時間)

在高併發的情況下,大量的請求同時查詢同乙個key時,此時這個key正好失效了,就會導致同一時間,這些請求都會去查詢資料庫,這樣的現象我們稱為快取擊穿。

採用分布式鎖,每次拿到鎖的時候都要去查詢一下快取有沒有、查不到快取的情況下,只有拿到鎖的第乙個執行緒去請求資料庫,然後插入快取。

快取服務或春失效、大量資料訪問db、、當某一時刻發生大規模的快取失效的情況,快取在同一時刻全部失效,造成瞬時db請求量大、壓力驟增,引起雪崩。

採用集群,降低服務宕機的概率

可以給快取設定過期時間時加上乙個隨機值時間,使得每個key的過期時間分布開來,不會集中在同一時刻失效。

2023年見

個人部落格:juhaozero的部落格

快取雪崩,穿透和擊穿

一 快取雪崩 大量key同時失效,大量請求傳送到db上,導致db宕機。解決辦法 設定key過期時間時,使用隨機數 setredis key,value,time math.random 10000 二 快取穿透 大量請求請求乙個快取中沒有的key,這些請求直接懟到db上,造成宕機。如傳送為負數的入參...

快取穿透,擊穿,雪崩

一 快取處理流程 前台請求,後台先從快取中取資料,取到直接返回結果,取不到時從資料庫中取,資料庫取到更新快取,並返回結果,資料庫也沒取到,那直接返回空結果。二 快取穿透 描述 快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為 1 的資料或id為特別大不存在的資料。這時的使...

快取穿透,擊穿,雪崩

快取穿透 在高併發下,查詢乙個不存在的值時,快取不會被命中,導致大量請求直接落到資料庫上,如活動系統裡面查詢乙個不存在的活動。快取擊穿 在高併發下,對乙個特定的值進行查詢,但是這個時候快取正好過期了,快取沒有命中,導致大量請求直接落到資料庫上,如活動系統裡面查詢活動資訊,但是在活動進行過程中活動快取...