redis 緩存引發的頭疼問題

緩存穿透
某個key緩存沒有,數據庫也沒有。一般這種情況發生了用戶惡意請求或者攻擊。造成一直不停查庫

解決方案
最頂層攔截,不合理的id直接打回去或者布隆過濾器
db如果差不多,設置個null進Redis,這樣下次就不會打到db,但是要注意合理的過期時間。


緩存雪崩
大批量不同的key同一時間到期,造成緩存失效,請求壓到數據庫。
解決方案
沒有很好的辦法,設置key的時候注意錯開過期時間,有些熱點數據甚至可以設置不過期


緩存擊穿
某個key緩存過期,但是數據庫有。正好這個點請求併發超高,還沒來的及寫緩存都壓到了數據庫上。

解決方案
加鎖!第一個請求來時,如果發現爲空,加鎖住讓後面的請求等待一下,參考多線程單例模式


分佈式緩存的效率問題
分佈式緩存需要經過網絡傳輸,既然有網絡,必然會有性能損耗,

 

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