緩存相關知識點

1.緩存命中率

二八定律

2.緩存穿透:

2.1 緩存穿透是說訪問一個緩存中沒有的數據,但是這個數據數據庫中也不存在。普通思路下我們沒有從數據庫中拿到數據是不會觸發加緩存操作的。這時如果是有人惡意攻擊,大量的訪問就會透過緩存直接打到數據庫,對後端服務和數據庫做成巨大的壓力甚至宕機。

2.2 解決方案:

緩存空對象。如果緩存未命中,而數據庫中也沒有這個對象,則可以緩存一個空對象到緩存。如果使用Redis,這種key需設置一個較短的時間,以防內存浪費。

緩存預測。預測key是否存在。如果緩存的量不大可以使用hash來判斷,如果量大可以使用布隆過濾器來做判斷。

3. 緩存併發

3.1 緩存併發這個場景很容易解釋:多個客戶端同時訪問一個沒有在cache中的數據,這時每個客戶端都會執行從DB加載數據set到緩存,就會造成緩存併發。

3.2 解決方案:

3.2.1 緩存預熱。提前把所有預期的熱數據加到緩存。定位熱數據還是比較複雜的事情,需要根據自己的服務訪問情況去評估。這個方案只能減輕緩存併發的發生次數不能全部抵制。

3.2.2 緩存加鎖。 如果多個客戶端訪問不存在的緩存時,在執行加載數據並set緩存這個邏輯之前先加鎖,只能讓一個客戶端執行這段邏輯。

4. 緩存防雪崩

4.1 緩存雪崩是緩存服務暫時不能提供服務,導致所有的請求都直接訪問DB。

4.2 解決方案:

構建高可用的緩存系統。目前常用的緩存系統Redis和Memcache都支持高可用的部署方式,所以部署的時候不防先考慮是否要以高可用的集羣方式部署。

限流。Netflix的Hystrix是非常不錯的工具,在用緩存時不妨搭配它來使用。

Hystrix:https://blog.csdn.net/loushuiyifan/article/details/82702522

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章