两种方案
- 通过MySQL自动同步刷新Redis,MySQL触发器+UDF函数实现。
【补充】UDF函数指的是用户自定义函数(User-Defined Functions),它是MySQL提供的一种扩展功能,允许用户自定义自己的SQL函数并在SQL查询中使用。
过程大致如下:
1)在MySQL中对要操作的数据设置触发器Trigger,监听操作。
2)客户端向MySQL中写入数据时,触发器会被触发触发之后,调用MySQL的UDF函数。
3)UDF函数可以把数据写入到Redis中,从而达到同步的效果。
- 解析MySQL的binlog实现,将数据库中的数据同步到Redis。
【补充】在 MySQL 中,二进制日志(Binary Log)通常简称为 binlog,是一种记录 MySQL 服务器对数据库更改操作的二进制格式日志。
可以通过canal实现。
canal是阿里巴巴旗下的一款开源项目,基于数据库增量日志解析,提供增量数据订阅&消费。
canal的原理
- canal模拟mysql slave的交互协议,伪装自己为mysql slave,向mysql master发送dump协议。(dump协议是一种用于备份和恢复数据的协议,它是Unix和类Unix操作系统中常用的备份格式之一)。
- mysql master收到dump请求,开始推送binary log给canal(Binary log(二进制日志)是MySQL数据库的一种日志文件,用于记录MySQL服务器的所有操作)。
- canal解析binary log对象(原始为byte流),将数据同步写入Redis。
参考资料:MySQL数据如何同步到Redis?