redis的穿透和雪崩

2022-08-29 09:18:12 字數 341 閱讀 7375

穿透: 從快取中查詢乙個資料,查到為空,需要每次都去資料庫中查詢。而從資料庫中查詢出來也為空,也就不寫入快取。導致乙個不存在的數每次都去資料庫中查詢,造成db系統很大壓力 造成快取穿透

解決:如果從資料庫中查詢結果為空,我們也要快取起來,避免下次訪問快取中沒有,而去訪問資料庫

雪崩:快取在一段是時間內失效,導致所有的查詢都落在資料庫上,甚至導致資料庫宕機,造成快取雪崩

解決:1.不同的key設定不同的過期時間

2.併發量不大的情況下,訪問資料庫的時候可以加鎖排隊 (高併發的情況下 不適用)

3 給快取的資料設定乙個快取標記,記錄是否失效, 另起乙個執行緒去監測哪個快取失效,如果失效,則更新快取

Redis 穿透和雪崩

就是訪問redis中乙個不存在的key的時候,會直接穿過快取,去資料庫中進行查詢.如果是黑客,進行惡意攻擊的時候,每次都請求超過2000個 秒的時候,這個時候mysql基本上就掛了.解決辦法是 每次從資料庫中查詢到乙個不存在的key的時候,就寫乙個空值到快取庫中,有惡意攻擊的時候,直接從快取中取到這...

Redis雪崩和Redis穿透

redis雪崩 查詢時redis沒有資料本來先從redis裡面查某個資料 但是redis中這個資料剛好被刪除了,還沒來得及更新 一瞬間很多請求直接進入了mysql進行查詢 而mysql承受不了太大壓力,就會出現雪崩redis穿透 跳過我們預想的資料本來先從redis裡面查某個資料 但是redis中沒...

redis的穿透和雪崩

redis穿透 正常的執行路徑是這樣的,請求資料,首先會從redis快取中拿資料,如果快取沒有的話才去查資料庫,再寫到redis快取中。那麼如果有人請求一條根本不存在的資料時,redis裡面肯定沒有嘛,它就會去訪問資料庫,但是資料庫沒有,所以它也沒把資料寫回redis快取。所以它每次請求這個資料的時...