更新cache/db的原则
读多写少的场景
读:读cache,有就返回;没有,读db,更新cache,返回
写:写db,删除cache
写多读少的场景
在事务中的顺序
cache和db操作放在一个事务里的时候,要注意cache和db的更新顺序,因为rollback是针对db而言的。
先cache后db
- 写cache成功 -> 写db成功 -> success
- 写cache成功 -> 写db失败 -> db回滚 -> cache改变了,db不变,造成不一致
- 写cache失败 -> db回滚 -> cache不变,db也不变,一致
先db后cache
- 写db成功 -> 写cache成功 -> success
- 写db成功 -> 写cache失败 -> db回滚 -> cache和db都不变,一致
- 写db失败 -> db回滚 -> cache和db都不变,一致
解决不一致问题的常用方法:
事务
悲观锁
乐观锁:version
分布式锁