全栈开发
redis
【Q366】如何保存数据库与缓存的双写一致性

如何保存数据库与缓存的双写一致性

Issue 欢迎在 Gtihub Issue 中回答此问题: Issue 371 (opens in a new tab)

Author 回答者: ansonlovecoding (opens in a new tab)

1.先写缓存,再异步写数据库,这种情形性能比较好,但是可能会存在写数据库失败导致的数据不一致问题,所以要在写数据库环节加上失败重试,以及重试失败后发送写库失败消息给消息队列以便再次异步写入;2.先写数据库,再写缓存,这个性能较差,因为缓存需要等待数据库写入成功才能更新;3.使用分布式事务来保证两阶段提交都能成功,一旦某个阶段失败则全部回滚;4.对于某些强一致性的数据做一个计划任务定时检查缓存与数据库的一致性,一旦不一致则更新缓存;