一、缓存穿透:
用户请求的数据在缓存和数据库中都没有,用户却还是一直在请求,造成数据库大量无用数据库操作,造成资源浪费。这种情况很可能是被攻击了。
解决方式:
1、缓存空数据
缺点:造成空间浪费,可以对数据设置有效期。
2、布隆过滤器
二、缓存击穿:
用户请求数据缓存中不存在,数据库中存在。同时用户并发太大造成数据库压力瞬间增大。
解决方式:
增加并发锁,如果数据不存在,同一请求查数据库前先加锁,查询后是否锁
三、缓存雪崩
缓存在同一时刻失效,同时请求数据库数据。原因可能是缓存宕机,或者缓存过期时间同时到期。
解决方式:
1、缓存服务增加高可用
2、缓存过期时间错开设为一定范围的随机数