缓存与数据库数据一致性问题解决方案

1.双删策略 + 设置延迟时间

在数据库更新前后都删除缓存,数据库更新后增加一定延迟时间再删除缓存数据,最后对缓存数据设置过期时间

优势:实现简单

劣势:无法实现绝对的数据一致性,最差的情况是超时时间内,缓存中数据是脏数据,再更新过程中增加延迟时间会导致更新缓存操作耗时过长

2.binLog订阅 +异步更新缓存

使用阿里开源cannal订阅mysql binLog,检测到数据库更新操作后,直接更新缓存内容,或者通过消息队列异步更新

优势:尽可能的保证了数据一致性,更新数据库与更新缓存实现解耦

劣势:引入其他组件,增加了系统的复杂度,实现上会复杂不少,且引入新的组件后需要保证cannal组件的高可用

猜你喜欢

转载自blog.csdn.net/woaichashaobao/article/details/80318321