缓存穿透和缓存雪崩
緩存穿透
緩存穿透是指查詢一個一定不存在的數據,由于緩存是不命中時需要從數據庫查詢,查不到數據則不寫入緩存,這將導致這個不存在的數據每次請求都要到數據庫去查詢,造成緩存穿透。
解決辦法:布隆過濾器
緩存雪崩
?如果緩存集中在一段時間內失效,發生大量的緩存穿透,所有的查詢都落在數據庫上,造成了緩存雪崩。
解決辦法:
1.?加鎖排隊??
在緩存失效后,通過加鎖或者隊列來控制讀數據庫寫緩存的線程數量。比如對某個key只允許一個線程查詢數據和寫緩存,其他線程等待。
2.數據預熱
可以通過緩存reload機制,預先去更新緩存,再即將發生大并發訪問前手動觸發加載緩存不同的key,設置不同的過期時間,讓緩存失效的時間點盡量均勻
總結
- 上一篇: 几个重要的设计模式
- 下一篇: 全量复制 增量复制 异步复制