redis缓存并发操作可能存在的数据正确性问题
其实我想说的意思就是上图时间线表明的问题,即便是A线程使用双删除,但是在高并发情况下是否存在其他线程在线程B存入旧数据(就是M=400)到A线程再次删除这个时间段内有其他线程读取M,然后拿脏数据的M做判断去进行后续操作呢?
假如这种情况是存在的,我的解决方案是定义一个public static final Map redisKeyMap = Maps.newHashMap();然后把放入redis的键全部放入这个集合,每次操作缓存时对相应的key加锁(不是说只要操作缓存就加锁),即synchronized (redisKeyMap.get(key1)){},保证A线程操作指令的一个原子性,以及A、B线程之间的顺序性,即下图所示:
redis缓存并发操作可能存在的数据正确性问题

相关文章:

  • 2021-09-17
  • 2021-07-17
  • 2021-12-04
  • 2021-06-14
  • 2021-08-20
  • 2021-12-26
  • 2021-09-24
猜你喜欢
  • 2021-10-23
  • 2022-12-23
  • 2021-04-16
  • 2022-12-23
  • 2022-12-23
相关资源
相似解决方案