Redis 穿透和雪崩

2021-10-23 20:44:21 字數 508 閱讀 8546

就是訪問redis中乙個不存在的key的時候,會直接穿過快取,去資料庫中進行查詢.

如果是黑客,進行惡意攻擊的時候,每次都請求超過2000個/秒的時候,這個時候mysql基本上就掛了.

解決辦法是:每次從資料庫中查詢到乙個不存在的key的時候,就寫乙個空值到快取庫中,有惡意攻擊的時候,直接從快取中取到這個空值.

就是每秒有5000個請求過來時候,redis快取庫崩了,然後這些請求瞬間落在了mysql資料庫上,直接導致資料庫宕機.

解決方案就是:

事前:

提高快取庫的高可用, 使用主從結構加哨兵 cluster集群,

事中:

使用ehcache+hystrix限流元件(當請求量非常巨大的時候,就呼叫自己開發好的乙個降級餓元件,返回一些預設值,如友情提示,或者空白值)

事後:

做持久化,盡快恢復快取集群,一旦恢復,自動從磁碟上讀取資料,恢復記憶體中的資料.

Redis雪崩和Redis穿透

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

redis的穿透和雪崩

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

Redis的雪崩和穿透

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