缓存穿透
缓存穿透产生的原因
- 用户请求的数据在缓存中和数据库中都不存在,不断发起请求,给数据库带来压力
缓存穿透的解决方案
1:缓存空对象
优点:实现简单,维护方便
缺点:
- 额外的内存消耗
- 可能造成短期的不一致–>当一个不存在的id发起请求,我们设置Null,此时新id为刚才的id,那缓存里面还是null
- 可以调整TTL减少影响,也可以在新添加数据的时候覆盖之前的Null
2:布隆过滤
优点:内存占用较少,没有多余的key
缺点:
- 实现复杂
- 存在误判可能–>因为布隆过滤器中的二进制位是通过数据库中的数据进行哈希运算得到哈希值,再将哈希值转换位二进制位保存到布隆过滤器中