快取擊穿,快取雪崩,快取穿透的概念及其預防措施

2021-10-11 16:22:01 字數 777 閱讀 6147

概念:

快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為「-1」的資料或id為特別大不存在的資料。這時的使用者很可能是攻擊者,攻擊會導致資料庫壓力過大。

解決方案:

1.介面校驗請求引數的有效性,如校驗id是否合法

2.從快取取不到的資料,在資料庫中也沒有取到,這時也可以將key-value對寫為key-null,快取有效時間可以設定短點,如30秒。

概念:指快取中資料大批量到過期時間,而查詢資料量巨大,引起資料庫壓力過大甚至down機。側重很多的快取資料都失效了。

解決方案:

1.設定不同的快取到期時間,如熱門資料有效期長一點,冷門資料有效期短一點。

2.針對長期有效,資料變化基本不變的資料進行永久性快取。

3.快取服務集群部署

概念:指乙個key非常熱點,在不停的扛著大併發,大併發集中對這乙個點進行訪問,當這個key在失效的瞬間,持續的大併發就穿破快取,直接請求資料庫,就像在乙個屏障上鑿開了乙個洞。

解決方案:

1.熱點資料實現快取永久有效

2.採用互斥鎖來快取資料

快取擊穿的重點就是,同一時間點上,大量請求沒有在快取中命中資料,而對資料庫服務產生巨大的壓力,所以我們可以在請求資料庫之前加上乙個鎖,持有鎖的執行緒才能去請求資料庫,並快取到快取資料庫,其他的執行緒等待,最後從快取獲                      獲取資料。

**展示:

快取穿透 快取擊穿 快取雪崩概念區分

在redis中,快取穿透 快取擊穿 快取雪崩是三個不同的概念,三者十分接近卻又區別明顯,大部分人對三者的概念還比較模糊,本文將詳述一下三者的區別 誘因以及解決方案。2.1 概念 快取擊穿是訪問的資料不存在,也就是在redis快取中查詢不到資料,就會去請求資料庫查詢,但是資料庫也可能不存在,因此就會每...

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

一 快取處理流程 前台請求,後台先從快取中取資料,取到直接返回結果,取不到時從資料庫中取,資料庫取到更新快取,並返回結果,資料庫也沒取到,那直接返回空結果。二 快取穿透 描述 快取穿透是指快取和資料庫中都沒有的資料,而使用者不斷發起請求,如發起為id為 1 的資料或id為特別大不存在的資料。這時的使...

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

所謂的快取穿透,簡單來講就是查詢某些不存在的key時,快取和資料庫查詢結果都為空,而空的結果又不被快取起來,而導致每次查詢都去請求資料庫層的情況。在流量大時,可能db就掛掉了,要是有人利用不存在的key頻繁攻擊我們的應用,這就是漏洞。過程 快取不命中,進而導致每次查詢都去查詢資料庫,快取也就失去了作...