redis缓存穿透,缓存雪崩
- 缓存雪崩
在某个时间段中,大范围的缓存失效,这时候所有请求就会直接到达数据库,造成数据库压力升高,也有可能是缓存服务器宕机.
解决方案:
将缓存过期时间尽量错开
不设置缓存过期时间
将缓存服务进行分布式部署 - 缓存穿透
用户查询到了一个数据库和缓存中都没有的值,代码逻辑一般会造成先查缓存,缓存中没有,又去查数据库.这样每次请求都会查完缓存查数据库.对数据库产生压力
解决方案:
代码逻辑增加校验,尽量避免不切实际的数据查询
缓存当中设置null值,当数据库中查询出空值时,在缓存中设置null值,可以给一个过期时间,避免一直占用过多资源.这样下次请求就会在缓存中查询.不会到达数据库