在使用redis或者memcache等快取時,大量key在同一時間集體過期失效,這時大量的訪問將會請求到db,可能導致系統崩潰。
解決方案
快取擊穿是快取雪崩的乙個特例,系統中對熱點資料快取也存在失效時間,在熱點的快取到達失效時間時,此時可能依然會有大量的請求到達系統,沒有了快取層的保護,這些請求同樣的會到達db從而可能引起崩潰。快取擊穿與快取雪崩的區別在於快取擊穿是對於特定的熱點資料來說,而雪崩對於是全部資料來說。
解決方案
查詢不存在的資料,如果快取中無該資料的資訊,則會去資料庫進行查詢,而資料庫中也不存在該資料,這種查詢一定不存在的資料對系統來說可能是一種危險,如果有人惡意用這種一定不存在的資料來頻繁請求系統,就是攻擊系統,大量惡意請求都會請求到db從而導致系統癱瘓。
解決方案
參考
快取穿透 快取擊穿 快取雪崩
一 快取處理流程 前台請求,後台先從快取中取資料,取到直接返回結果,取不到時從資料庫中取,資料庫取到更新快取,並返回結果,資料庫也沒取到,那直接返回空結果。二 快取穿透 描述 快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為 1 的資料或id為特別大不存在的資料。這時的使...
快取穿透,快取擊穿,快取雪崩
所謂的快取穿透,簡單來講就是查詢某些不存在的key時,快取和資料庫查詢結果都為空,而空的結果又不被快取起來,而導致每次查詢都去請求資料庫層的情況。在流量大時,可能db就掛掉了,要是有人利用不存在的key頻繁攻擊我們的應用,這就是漏洞。過程 快取不命中,進而導致每次查詢都去查詢資料庫,快取也就失去了作...
快取穿透快取擊穿快取雪崩
1 快取穿透 1.1 什麼是快取穿透 快取穿透,是指查詢乙個資料庫一定不存在的資料 核心 快取和資料庫該值不存在 正常的使用快取流程大致是,資料查詢先進行快取查詢,如果key不存在或者key已經過期,再對資料庫進行查詢,並把查詢到的物件,放進快取。如果資料庫查詢物件為空,則不放進快取。1.2 帶來的...