Redis作为缓存,Mysql的数据如何与redis进行同步? 一定要设置前提,先介绍业务背景 延时双删 双写一致性:当修改了数据库的数据也要同时更新缓存的数据,缓存和数据库的数据要保持一致 读操
一定要设置前提,先介绍业务背景
问题来了,那么先删除数据库,还是先删除缓存呢?我们都分析一下,这里只分析异常情况
先删除缓存,再删除数据库。假设我们有缓存数据A=10,和数据库数据A=10
先操作数据库,再删除缓存,假设我们有缓存数据已经过期,和数据库数据A=10
我们发现这两种都会导致脏数据的出现,所以,删除两次缓存就出现了。这就是延时双删:删除缓存-修改数据库-延迟一会删除缓存
,就是为了降低脏数据的出现,那为什么要延时呢?因为一般情况下,数据库是主从模式,我们要延时一会,让数据库主节点同步到从节点,再删除缓存。但是也会有小问题,因为延时的时间不好把控。所以做不到绝对的强一致。
那有更好的办法吗?我们可以使用分布式锁来解决这个问题
但是这个显然效率有点太低了,我们可以优化一下
一般缓存数据都是读多写少,我们可以使用读写锁
控制
这样性能就得到了提升,虽然实现了强一致,但是性能还是有点低
最终一致性的保证,主要取决于MQ的可靠性
canal是阿里开发的中间件,主要是基于mysql的主从同步实现的
二进制日志(BNLOG)记录了所有的DDL (数据定义语言)语句和DML(数据操纵语言)语句,但不包括数据查询(SELECT、SHOW)语句。
优点:无代码侵入
来源地址:https://blog.csdn.net/m0_65778338/article/details/133562880
--结束END--
本文标题: Redis作为缓存,mysql的数据如何与redis进行同步?
本文链接: https://www.lsjlt.com/news/428358.html(转载时请注明来源链接)
有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341
下载Word文档到电脑,方便收藏和打印~
2024-05-16
2024-05-16
2024-05-16
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
2024-05-15
回答
回答
回答
回答
回答
回答
回答
回答
回答
回答
0