快取穿透 快取雪崩和快取擊穿的概念

2021-09-25 17:50:53 字數 423 閱讀 8621

快取穿透是指查詢乙個一定不存在的資料,由於快取是不命中時需要從資料庫查詢,查不到資料則不寫入快取,這將導致這個不存在的資料每次請求都要到資料庫去查詢,造成快取穿透。在流量大時,可能db就掛掉了,要是有人利用不存在的key頻繁攻擊我們的應用,這就是漏洞。

快取雪崩是指在設定快取時採用了相同的過期時間,導致快取在某一時刻同時失效,導致所有的查詢都落在資料庫上,造成了快取雪崩。

對於一些設定了過期時間的key,如果這些key可能會在某些時間點被超高併發地訪問,是一種非常「熱點」的資料。這個時候,需要考慮乙個問題:快取被「擊穿」的問題,這個和快取雪崩的區別在於這裡針對某一key快取,前者則是很多key。 

快取在某個時間點過期的時候,恰好在這個時間點對這個key有大量的併發請求過來,這些請求發現快取過期一般都會從後端db載入資料並回設到快取,這個時候大併發的請求可能會瞬間把後端db壓垮。

快取穿透,快取雪崩和快取擊穿

q 快取穿透,是指查詢乙個資料庫一定不存在的資料。正常的使用快取流程大致是,資料查詢先進行快取查詢,如果key不存在或者key已經過期,再對資料庫進行查詢,並把查詢到的物件,放進快取。如果資料庫查詢物件為空,則不放進快取。a 1.布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個...

快取擊穿 快取穿透和快取雪崩

快取擊穿 定義 快取中的key一般設有過期時間,如果某個key過期了,恰在這個時候,有大量的併發請求訪問這個key,則這些請求都會到達db,導致db瞬間壓力過大,壓垮db。解決方案 1.設定互斥鎖,mutex。當快取失效時不時立即去訪問資料庫,而是使用快取工具的操作成功帶返回值的操作,比如redis...

快取穿透 快取雪崩和快取擊穿

快取系統是我們平時開發經常使用到的,也是在高併發場景下減少或防止流量對db等底層系統衝擊的最有效手段之一。下面就簡單談談快取系統經常提及的三個問題以及解決方案。首先回憶下通常情況我們設定的快取機制,如下圖所示 快取載入機制 這套機制,由於出於容錯考慮,從儲存層查不到資料則不寫入快取,這就導致每次請求...