MySQL 与 Redis 缓存的同步方案
方案1(UDF)
演示案例
下面是MySQL的表
下面是UDF的解析代码
定义对应的触发器
方案2(解析binlog)
在介绍方案2之前我们先来介绍一下My
本文介绍MySQL与Redis缓存的同步的两种方案 方案1(UDF) 演示案例 下面是MySQL的表 下面是UDF的解析代码 定义对应的触发器 方案2(解析binlog) 在介绍方案2之前我们先来介绍一下MySQL复制的原理,如下图所示: 方案2就是: 例如下面是一个云数据库实例分析: 这个技术方案的难点就在于:如何解析MySQL的Bin Log。但是这需要对binlog文件以及MySQL有非常深入的理解,同时由于binlog存在Statement/Row/Mixedlevel多种形式,分析binlog实现同步的工作量是非常大的 Canal开源技术 canal是阿里巴巴旗下的一款开源项目,纯Java开发。基于数据库增量日志解析mssql数据库同步,提供增量数据订阅&消费,目前主要支持了MySQL(也支持mariaDB) 开源参考地址有:github.com/liukelin/canal_mysql_nosql_sync 工作原理(模仿MySQL复制): 架构: 大致的解析过程如下: 更多关于Cancl可以百度搜索 下面是运行拓扑图 MySQL表的同步,采用责任链模式,每张表对应一个Filter。例如zvsync中要用到的类设计如下: 下面是具体化的zvsync中要用到的类, 每当新增或者删除表时,直接进行增删就可以了 附加 本文上面所介绍的都是从MySQL中同步到缓存中。但是在实际开发中可能有人会用下面的方案:客户端有数据来了之后,先将其保存到Redis中,然后再同步到MySQL中 这种方案本身也是不安全/不可靠的,因此如果Redis存在短暂的宕机或失效,那么会丢失数据 作者 | 江南、董少 来源 | dongshao.blog.csdn.net/article/details/107190925 (编辑:晋中站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |