缓存预热
- 让一些合法的数据需要提前入驻进redis
- 什么都不做,在升级窗口由自己人提前同步redis。
- 通过中间件初始化缓存。
缓存雪崩
- redis主机宕机,redis全盘崩溃
可以将redis集群配置成高可用,使用主从+哨兵 或者 集群 - redis中大量key同时大面积失效
redis中key设置为永不过期,或者过期时间错开
多缓存结合预防雪崩
缓存穿透
1.请求查询一条记录,redis中没有,数据库也没有,但是请求每次都会打到数据库,导致数据库压力增大,这种现象被称为缓存穿透
2. 第一种解决方案 回写增强
如果发生了缓存穿透,可以针对要查询的数据在Redis中设置默认值,缓存和数据库中都不存在的值,可以将这个key记录到redis中成为黑名单
3. 使用布隆过滤器,guava 谷歌开源布隆过滤器
缓存击穿
- 大量的请求正好同时请求一个key,此时这个key失效了,就会导致大量的请求打到数据库上,简单来说就是热点key突然失效了。
- 失效原因,时间到了自然清除,刚刚delete掉
- 解决方案1 不设置过期时间
- 解决方案2 互斥更新,双检加锁
- 对于热点数据开启AB两套缓存,查询先查询A 查不到查询B 更新先更新B 更新B完成后更新A