缓存穿透
问题描述
描述:查询不存在的key,绕过缓存,给DB施压,如下图所示:
方案1:过滤器
如下图所示,通过增加过滤器对待查询的key进行过滤,过滤器的形式可以有多种,如白名单,符合某种规则等等。
方案2:缓存空值
当key对应的值不存在,用特殊的空值表示,加入缓存(时间不能过长,防止影响正常值);
缓存雪崩
问题描述
描述:某一时刻,大部分缓存同时失效,导致大量的请求直接查询数据库,造成DB压力过大或者宕机;
解决方案
- 根据业务特点,对key分组,尽量使得失效时间均匀分布;
- 增加多级缓存;
缓存击穿
问题描述
描述:“热点缓存”失效,导致大量请求访问数据库,造成load过高或宕机;
解决方案
缓存预热
问题描述
描述:在真实流量到达前,提前将数据加载到缓存中;
解决方案
Mock线上流量;