应用程序向redis与oracle写的顺序以及中间的时间差如何解决?

redis与oracle中存有同一份数据,当数据发生变化时,应用程序是先写redis然后再同步到oracle,还是先写oracle然后再同步到redis呢,使用何种同步机制可以有效的解决这个时间差中两份数据的不一致性呢?...显示全部

redis与oracle中存有同一份数据,当数据发生变化时,应用程序是先写redis然后再同步到oracle,还是先写oracle然后再同步到redis呢,使用何种同步机制可以有效的解决这个时间差中两份数据的不一致性呢?

收起
参与10

查看其它 1 个回答顾黄亮的回答

顾黄亮顾黄亮课题专家组技术总监畅销书作者

如果你是当数据库用,那就类似于电商抢购场景。抢购的场景中有个需要解决的问题是超买和超卖,意思就是说,我要控制库存数量,而且要保证可用库存的数量为0,不能出现负数。一般是把数据从oracle刷到redis,贴合题主的问题,那就是同样有一份数据,当数据变化的时候,是先写redis还是先写oracle?是先写redis,再写oracle,因为代码层面保证数据的一致性,在高并发情况下,悲观锁机制并不会很友好,而且影响性能。而redis天然的原子性事务,是可以保证数据的一致性。
如果你当缓存用,又要确保数据的强一致性,是可以先写redis,也可以先写oracle,如果先写redis,参考前一段话,采取redis的强一致性;如果先写oracle,那就采取悲观锁来实现。

银行 · 2019-04-24
浏览1594

回答者

顾黄亮
技术总监畅销书作者
擅长领域: 云计算数据库系统运维

顾黄亮 最近回答过的问题

回答状态

  • 发布时间:2019-04-24
  • 关注会员:2 人
  • 回答浏览:1594
  • X社区推广