什麼是redis的雪崩和穿透 擊穿

2021-10-12 17:35:34 字數 1215 閱讀 5748

一. 穿透

1.什麼是快取穿透

造成的原因

1.業務自身**或資料出現問題;2.一些惡意攻擊、爬蟲造成大量空的命中,此時會對資料庫造成很大壓力。

解決方法

1.設定布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個一定不存在的資料會被這個bitmap攔截掉,

從避免了對底層儲存系統的查詢壓力。

2. 如果乙個查詢返回的資料為空,不管是資料不存在還是系統故障,我們仍然把這個結果進行快取,但是它的過期時間會很短

最長不超過5分鐘。

二、雪崩

1.什麼是雪崩

因為快取層承載了大量的請求,有效的保護了儲存 層,但是如果快取由於某些原因,整體不能夠提供服務,於是所有的請求,就會到達儲存層,儲存層的呼叫量就會暴增,造成儲存層也會掛掉的情況。快取雪崩的英文解釋是奔逃的野牛,指的是快取層當掉之後,併發流量會像奔騰的野牛一樣,大量後端儲存。

存在這種問題的乙個場景是:當快取伺服器重啟或者大量快取集中在某乙個時間段失效,這樣在失效的時候,大量資料會去直接訪問db,此時給db很大的壓力。

2.解決方法

(1)設定redis集群和db集群的高可用,如果redis出現宕機情況,可以立即由別的機器頂替上來。這樣可以防止一部分的風險。

(2)使用互斥鎖

在快取失效後,通過加鎖或者佇列來控制讀和寫資料庫的執行緒數量。比如:對某個key只允許乙個執行緒查詢資料和寫快取,其他執行緒等待。單機的話,可以使用synchronized或者lock來解決,如果是分布式環境,可以是用redis的setnx命令來解決。

(3)不同的key,可以設定不同的過期時間,讓快取失效的時間點不一致,盡量達到平均分布。

(4)永遠不過期

redis中設定永久不過期,這樣就保證了,不會出現熱點問題,也就是物理上不過期。

(5)資源保護

使用netflix的hystrix,可以做各種資源的執行緒池隔離,從而保護主線程池。

什麼是redis的雪崩和穿透 擊穿

1.什麼是快取穿透 造成的原因 1.業務自身 或資料出現問題 2.一些惡意攻擊 爬蟲造成大量空的命中,此時會對資料庫造成很大壓力。解決方法 1.設定布隆過濾器,將所有可能存在的資料雜湊到乙個足夠大的bitmap中,乙個一定不存在的資料會被這個bitmap攔截掉,從避免了對底層儲存系統的查詢壓力。2....

了解什麼是 redis 的雪崩 穿透和擊穿?

對於系統 a,假設每天高峰期每秒 5000 個請求,本來快取在高峰期可以扛住每秒 4000 個請求,但是快取機器意外發生了全盤宕機。快取掛了,此時 1 秒 5000 個請求全部落資料庫,資料庫必然扛不住,它會報一下警,然後就掛了。此時,如果沒有採用什麼特別的方案來處理這個故障,dba 很著急,重啟資...

redis 什麼是雪崩 穿透 併發 預熱?

面試 你懂什麼是分布式系統嗎?redis分布式鎖都不會?資料未載入到快取中,或者快取同一時間大面積的失效,從而導致所有請求都去查資料庫,導致資料庫cpu和記憶體負載過高,甚至宕機。1 redis集群大面積故障 2 快取失效,但依然大量請求訪問快取服務redis 3 redis大量失效後,大量請求轉向...