在回答这几个问题之前先搞清楚 这几个问题分别出现在什么场景
缓存穿透 (缓存穿透是指缓存和数据库中都没有的数据)
- 加强数据校验
- 使用布隆过滤器
- 请求数据短时间缓存
- 终极大招,让运维对每秒请求超过阈值的IP进行拉黑
缓存击穿(是指一个Key非常热点,在不停的扛着大并发,大并发集中对这一个点进行访问,当这个Key在失效的瞬间,持续的大并发就穿破缓存,直接请求数据库)
- 热点数据永不失效
- 加互斥锁
缓存雪崩( 缓存大面积失效,或者redis宕机了)
-
避免缓存同一时间失效在设置缓存失效时间的时候加一个随时数
-
使用降级熔断机制 保证一部分功能正常使用。即限流
-
使用Redis集群