redis快取穿透 快取雪崩和熱點key

2021-09-26 16:20:01 字數 832 閱讀 1613

快取穿透

穿過快取,直接訪問資料庫。

解決方案:

對查詢不存在的儲存到快取中value設定為null.

採用布隆過濾器.

如果key有規則,那麼就可以直接過濾掉無規則的key

//偽**

//if(jedis查詢快取不存在)else

//返回結果

}else

快取雪崩

某一時刻大量的key過期,使用者又大量的查詢這些key。造成系統大量的請求查詢資料庫。造成cpu和記憶體壓力,資料庫壓力。

解決方案:

讓key均勻的過期.

採用加鎖的方式.

//單程序的話,就採用加鎖的方式即可。

//分布式模式的話,就採用分布式鎖咯。

//以下舉例單程序模式

//查詢快取中有沒有

public result getvalue()elseelse

}}臨時想到的知識點:

//感覺採用函式遞迴的話,有點像操作的迴圈。大概多了個返回值?不是很懂

//一般迴圈的話,大概是不知道遞迴的退出條件?不是很懂。

//可以嘗試一下解決掉

熱點key

一般比如說爆款商品

可以設定為永不過期.(物理不過期,邏輯過期)但是可能會出現一小段時間內,還在訪問原有的快取值。

設定二級快取。

等等還有可能有hystrix來處理

Redis快取穿透 快取雪崩

把redis作為快取使用已經是司空見慣,但是使用redis後也可能會碰到一系列的問題,尤其是資料量很大的時候,經典的幾個問題如下 一 快取和資料庫間資料一致性問題 分布式環境下 單機就不用說了 非常容易出現快取和資料庫間的資料一致性問題,針對這一點的話,只能說,如果你的專案對快取的要求是強一致性的,...

Redis 快取穿透 快取雪崩

目錄 1.快取穿透 如何避免?如何選擇?2 快取擊穿 如何解決 3.快取雪崩 如何解決?快取穿透 一般的快取系統,都是按照key去快取查詢,如果不存在對應的value,就應該去後端系統查詢 比如db 一些惡意的請求會故意查詢不存在的key,請求量很大,就會對後端系統造成很大的壓力,或導致資料庫異常。...

redis快取穿透 快取雪崩

什麼是快取雪崩 在同一時間內大量的快取資料失效,大量的請求都會去資料庫查詢,造成快取雪崩。解決方法 這個沒有完美的解決方法,但是可以分析使用者行為,盡量讓失效時間點均勻分布,還有就是在快取失效後,通過加鎖或者佇列來控制讀資料庫寫快取的執行緒數量,比如對某國key只允許乙個執行緒查詢資料庫和快取,其他...