一、缓存穿透
缓存穿透是指查询一个缓存中和数据库中都不存在的数据,导致每次查询这条数据都会透过缓存,直接查库,最后返回空。当大量的请求访问这种缓存,是直接作用在关系型数据库上,数据库压力会暴增,甚至宕机。
解决方案:
1.缓存空对象或空值
2.使用布隆过滤器
二、缓存击穿
缓存击穿是指当缓存中某个热点数据过期了,在该热点数据重新载入缓存之前,有大量的查询请求穿过缓存,直接查询数据库。这种情况数据库压力会暴增,甚至宕机。
解决方案:
1.不设置过期时间
2.失效场景使用分布式锁,加载缓存
三、缓存雪崩
缓存雪崩是指当缓存中有大量的key在同一时刻过期,或者Redis直接宕机了。
解决方案:
1.设置过期时间加上随机数
2.使用redis集群实现缓存服务高可用