现在有个一个需求,就是修改一个表中的某个字段的值,但是这个字段中的值在别的地方随时可能被修改(其实是扣款),这样的话,我在修改这个值的过程中可能就回出现差异。求大神解答如何能避免这个差异
用缓存吧,“数据的一致性”和“并发执行”本身就是一个矛盾的结合体。
以前用过锁表的方法,当一个人操作的时候就把数据给锁定了,不能让第二个人操作数据。虽然保证一致性了,但是操作不大方便。
数据库里面有个自动锁,当你对某条数据执行写操作的时候这条数据就自动被锁死,其他线程只能对此数据执行读操作
在redis设置失效时间后,如果需要在未失效时保证数据一致就需要在更新数据库的同时更新redis,若是在放入redis同时需要存入mongodb等非关系型数据库,可以将消息放入一些消息机制,这样以保证数据一致性。
用缓存吧,“数据的一致性”和“并发执行”本身就是一个矛盾的结合体。
以前用过锁表的方法,当一个人操作的时候就把数据给锁定了,不能让第二个人操作数据。虽然保证一致性了,但是操作不大方便。
悲观锁/乐观版本控制