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

2021-09-12 21:24:14 字數 608 閱讀 4808

q: 快取穿透,是指查詢乙個資料庫一定不存在的資料。正常的使用快取流程大致是,資料查詢先進行快取查詢,如果key不存在或者key已經過期,再對資料庫進行查詢,並把查詢到的物件,放進快取。如果資料庫查詢物件為空,則不放進快取。

a:1.布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個一定不存在的資料會被這個bitmap攔截掉,從而避免了對底層儲存系統的查詢壓力

2.如果乙個查詢返回的資料為空(不管是資料不存在,還是系統故障),我們仍然把這個空結果進行快取,但它的過期時間會很短,最長不超過五分鐘。通過這個直接設定的預設值存放到快取,這樣第二次到快取中獲取就有值了,而不會繼續訪問資料庫

q: 快取雪崩,是指在某乙個時間段,快取集中過期失效。

a:1.加鎖排隊

2.給資料新增乙個快取標記,記錄快取的是否失效,如果快取標記失效,則更新快取

3.為key設定不同的快取失效時間

q: 快取擊穿是指快取中沒有但資料庫中有的資料(一般是快取時間到期),這時由於併發使用者特別多,同時讀快取沒讀到資料,又同時去資料庫去取資料,引起資料庫壓力瞬間增大,造成過大壓力。

a:1. 設定熱點資料永遠不過期。

2. 加互斥鎖。 同一時間只能有乙個執行緒查詢資料庫,其餘等待。

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

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

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

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

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

快取穿透的概念很簡單,使用者想要查詢乙個資料,發現redis記憶體資料庫沒有,也就是快取沒有命中,於是向持久層資料庫查詢。發現也沒有,於是本次查詢失敗。當使用者很多的時候,快取都沒有命中 秒殺 於是都去請求了持久層資料庫。這會給持久層資料庫造成很大的壓力,這時候就相當於出現了快取穿透。布隆過濾器 布...