缓存穿透、缓存雪崩和缓存击穿简述
缓存穿透
缓存穿透是指客户端请求的数据在缓存中和数据库中都不存在,这样缓存永远都不会生效,这些请求都会打到数据库。若不断发起这样的请求,就会带给数据库巨大的压力
常见的解决方案:
1、缓存空对象:在第一次请求缓存未命中,进而请求数据库也没查到数据时,我们可以在redis中缓存一个空对象,这样后续重复的请求就不会达到数据库。
优点:实现简单,维护方便
缺点:额外的内存消耗,也可能造成短期的不一致
2、布隆过滤:在客户端和redis之前加一层布隆过滤器
优点:内存占用较少,没有多余key
缺点:实现复杂,也可能实现误判
3、增强id复杂度
4、做好数据的基础格式校验
5、加强用户权限校验
6、做好热点参数的限流