首页 > 其他 > 详细

面试篇四:并发编程

时间:2020-05-03 10:21:34      阅读:38      评论:0      收藏:0      [点我收藏+]
  • 如何保证缓存一致性

一般是在数据发生变更时,主动更新缓存中的数据或者移除对应缓存。

当缓存中的某个key在被更新时,同时被大量请求要获取该key,这时怎么解决数据一致性问题?

锁:在缓存更新或过期时,先获取锁,等到更新或从数据库获取完成并存入缓存后,再释放锁,这个过程,其他线程就一直处理等待中。

  • 缓存雪崩

缓存没查到的数据,则会去后段数据库查询;这时如果多个请求并发的要从数据库获取数据,对数据库造成很大的压力,就可能出现缓存雪崩。

如某个时间节点内,缓存集中失效,如果大量请求获取数据,就可能出现缓存雪崩。

该数据是可以从数据库查询到的,这是和下面说的缓存穿透不一样的地方。

怎么解决?

(1)借助限流、降级、熔断等手段可降低影响。

(2)设置多级缓存,分别设置不同的过期策略。

  • 缓存穿透

缓存查不到的数据,出现大量请求并发查询,这时候就会一直访问后段数据库,实际上,后段数据库本身也不存在该数据,实际上是不必要的查询,这种就是缓存穿透。怎么解决?

(1)缓存一个空对象,设置较短的过期时间。这种解决方法适合命中率不高,但更新频繁的数据。

(2)把可能出现数据为null的所有key,存在在一个集合中,在每次请求前先拦截。这种解决方法适合命中率不高、更新不频繁的数据。

 

面试篇四:并发编程

原文:https://www.cnblogs.com/scorpio-cat/p/12820948.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!