Redis的快取穿透問題和雪崩問題

2022-07-01 16:27:08 字數 776 閱讀 8290

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

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

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

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

解決方案就是:

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

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

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

好處3:只要有2/5的請求可以被處理,就意味著你的系統沒有死掉,對使用者來說,就是可能點選幾次重新整理不出來頁面,但是可能多點幾次,就會重新整理出來一次.

Redis快取穿透 快取雪崩問題

穿透雪崩主要是因為查詢資料庫造成的,那麼讀寫分離,快取資料查詢失敗不去查資料庫就好了。查的時候有即是有,無即是無,不會再查資料庫,快取的穿透和雪崩問題就不存在了。其次新增資料庫和快取同步功能,保證資料庫和快取資料是一致的即可 需要注意的是這時候資料庫資料是有限和相對穩定的,其實如果是海量資料同時放入...

Redis快取穿透和雪崩

快取的目的是什麼?提高效能,快取查詢的速度比去資料庫查詢要快。快取會分擔部分請求,減少併發壓力。那麼快取穿透是什麼?怎麼解決快取穿透呢?一般快取系統,按key去查詢value,如果不存在相應的key,那麼就會去資料庫查詢,如果key對應的value是一定不存在的,並且對key的併發查詢很高,那麼每次...

Redis 快取穿透和雪崩

快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為 1 的資料或id為特別大不存在的資料。這時候就會繞過快取,每次都請求資料庫,這樣的話,大量的請求都直接到達資料庫,這種現象就叫快取穿透。list list demoservice.getdemodata demoid 防止...