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