本文共 625 字,大约阅读时间需要 2 分钟。
一、缓存穿透的出现
缓存穿透的意思就是缓存永远无法拦截这个请求,而让它去了数据库。当一个查询的key不存在redis,去数据库查也没有,这样也就没法做缓存,这样当要查这个key时,就永远会去到数据库了,如果此时并发很高,那么数据库就很危险了,这叫缓存穿透。缓存穿透一般是恶意的并发请求。二、缓存穿透的预防
1、去到数据库之前先设置zookeeper分布式锁,类似于缓存击穿的处理。 参考:https://blog.csdn.net/raoxiaoya/article/details/1010115082、使用布隆过滤器
原理是,穿过redis去数据库之前先检查一下要查找的key是否在布隆过滤器里面,如果不存在则说明本身就是不存在的,去了数据库也是查不到,那么有可能是恶意的请求,直接返回。当然布隆过滤器里面存放的是全部的key,它实际上是一个集合,缺点是有一定误判率的,优点是它内部的算法无伦在时间上还是在空间上都是表现不错的。 关于布隆过滤器原理及其实现: https://blog.csdn.net/raoxiaoya/article/details/101026919 https://blog.csdn.net/raoxiaoya/article/details/1010188403、接口限流与熔断、降级
重要的接口一定要做好限流策略,防止用户恶意刷接口,同时要降级准备,当接口中的某些服务不可用时候,进行熔断,失败快速返回机制。