数据库一致性问题以及解决方案

什么是数据库一致性问题

就是数据库之间数据不一致

为什么会出现数据库一致性问题

我们在做业务时,如果每次都去MySQL存取数据,效率比较低,我们会引入缓存机制,把数据存入Redis,每次去Redis读,去MySQL写数据

由于在MySQL写数据,Redis也需要更新,又由于Redis每个键都有过期时间,所以当过期时,MySQL和Redis会存在数据不一致的情况

如何解决

1. 先更新缓存,后更新数据库

2. 先更新数据库,后更新缓存

存在两个问题

1. 第一步成功、第二步失败

2. 并发顺序问题

更优化的做法

延时双删

延时双删针对第一种解决方法,在更新数据库完成后sleep一会再次更新缓存

消息队列

针对第二种解决方案,先更新数据库,成功后往消息队列发消息,消费到消息后再删除缓存,借助消息队列的重试机制来实现,达到最终一致性的效果

订阅binlog日志,再操作日志

Binlog是MySQL数据库中的一种日志文件,记录了所有的数据库更改操作,包括插入、更新和删除等操作。通过监听binlog文件,可以获取到数据库的变更操作,并将这些操作同步到其他节点或系统中,从而保证数据的一致性。

猜你喜欢

转载自blog.csdn.net/csxylrf/article/details/131329457