1.缓存穿透
定义:
缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远不会生效,这些请求都会打到数据库
解决方案:
缓存空对象:
优点: 实现简单,维护方便
缺点: 额外的内存消耗;可能造成短期的不一致
布隆过滤器:
优点 :内存占用较少,没有多余key
缺点 : 实现复杂;存在误判可能
其他方法:
增强id的复杂度,避免被猜测id规律;
做好数据的基础格式校验;
加强用户权限校验;
做好热点参数的限量.
2.缓存雪崩:
定义:
在同一时段内大量的缓存key同时失效或Redis服务宕机,导致大量请求打到数据库,带来巨大压力
解决方案:
给不同的Key的TTL设置随机值
利用Redis的集群提高服务的可用性
给缓存业务添加降级限流策略
给业务增加多级缓存
3.缓存击穿:
定义:
缓存击穿问题也叫热点 Key 问题,就是一个被高并发访问并且缓存重建业务较复杂的 key 突然失效了,无数的请求访问会在瞬间给数据库带来巨大的冲击。