其他
MySQL 与 Redis 缓存的同步方案
来源:dongshao.blog.csdn.net/article/details/107190925
本文介绍MySQL与Redis缓存的同步的两种方案
方案1:通过MySQL自动同步刷新Redis,MySQL触发器+UDF函数实现
方案2:解析MySQL的binlog实现,将数据库中的数据同步到Redis
# 方案1(UDF)
这种方案适合于读多写少,并且不存并发写的场景 因为MySQL触发器本身就会造成效率的降低,如果一个表经常被操作,这种方案显示是不合适的
演示案例
定义对应的触发器
# 方案2(解析binlog)
Canal开源技术
eventParser (数据源接入,模拟slave协议和master进行交互,协议解析) eventSink (Parser和Store链接器,进行数据过滤,加工,分发的工作) eventStore (数据存储) metaManager (增量订阅&消费信息管理器) server代表一个canal运行实例,对应于一个jvm instance对应于一个数据队列 (1个server对应1..n个instance) instance模块:
parse解析MySQL的Bin log,然后将数据放入到sink中 sink对数据进行过滤,加工,分发 store从sink中读取解析好的数据存储起来 然后自己用设计代码将store中的数据同步写入Redis中就可以了 其中parse/sink是框架封装好的,我们做的是store的数据读取那一步
# 附加
本文上面所介绍的都是从MySQL中同步到缓存中。
但是在实际开发中可能有人会用下面的方案:
扫码进群记得备注:城市、昵称和技术方向。