• 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏吧

什么是缓存穿透,如何解决?

互联网 diligentman 5天前 3次浏览

缓存穿透:指在高并发场景下,如果某一个 key 被高并发访问,没有被命中,出于对容错性考虑,会尝试去从后端数据库中获取,从而导致了大量请求到达数据库,而当该 key 对应的数据库本身就是空的情况下,这就导致数据库并发的去执行了很多不必要的查询操作,从而导致巨大冲击和压力。

缓存穿透解决方案

1. 缓存空对象

对查询结果为空的对象也进行缓存,如果是集合,可以缓存一个空的集合(非 null ),如果是缓存单个对象,可以通过字段标识来区分。这样避免请求穿透到后端数据库

同时,也需要保证缓存数据的时效性。这种方式实现起来成本较低,比较适合命中不高,但可能被频繁更新的数据。

2. 单独过滤处理

对所有可能对应数据为空的 key 进行统一的存放,并在请求前做拦截,这样避免请求穿透到后端数据库。这种方式实现起来相对复杂,比较适合命中不高,但是更新不频繁的数据。

什么是缓存穿透,如何解决?

 


程序员灯塔
转载请注明原文链接:什么是缓存穿透,如何解决?
喜欢 (0)