本发明属于缓存更新,涉及一种mysql数据实时同步至redis缓存的方法、系统、设备及介质。
背景技术:
1、mysql是企业系统中最常用的关系型数据库,但mysql数据库往往无法满足高并发和低延迟的查询要求,因此,缓存技术被广泛应用。redis作为一种高性能的内存数据库,是缓存技术的首选。然而,实现mysql数据与redis缓存同步是一个关键问题。
2、现有技术中,通常采用手动或开发程序的方式来更新缓存,但这种方式无法适应变化的需求,存在效率低且缓存更新不及时的问题。
技术实现思路
1、本发明的目的在于克服上述现有技术的缺点,提供了一种mysql数据实时同步至redis缓存的方法、系统、设备及介质,该方法、系统、设备及介质能够适应变化的需求,同时就有效率高以及缓存更新及时的特点。
2、为达到上述目的,本发明公开了一种mysql数据实时同步至redis缓存的方法,包括:
3、canal捕获mysql数据变化,获取mysql变化数据,并将所述mysql变化数据发送至kafka主题;
4、配置同步规则;
5、通过flink作业根据同步规则,将kafka主题中的mysql变化数据同步至redis缓存。
6、本发明所述的mysql数据实时同步至redis缓存的方法进一步改进在于:
7、进一步的,所述canal捕获mysql数据变化,获取mysql变化数据,并将所述mysql变化数据发送至kafka主题的过程为:
8、在服务器上安装canal服务,并配置canal连接到mysql数据库,读取mysql binlog日志;
9、canal解析mysql binlog日志,捕获mysql变化数据,并生成json格式消息;
10、canal将mysql变化数据以json格式消息发送到kafka主题。
11、进一步的,所述配置同步规则的过程为:
12、读取mysql数据源的表和表字段信息,选择需要同步的表步、表中需要同步的字段以及设置的数据过滤条件;
13、定义redis缓存中key和value的数据格式;
14、将同步规则存储到关系型数据库中,以供flink作业使用。
15、进一步的,所述通过flink作业根据同步规则,将kafka主题中的mysql变化数据同步至redis缓存过程为:
16、创建flink作业,订阅kafka主题,实时读取mysql变化数据;
17、flink作业启动后读取关系型数据库中保存的同步规则,获取要同步到redis缓存的表、字段、数据过滤条件以及redis数据格式,同时在flink作业中设置每小时定时读取已保存同步规则;
18、根据同步规则中设置的过滤条件,匹配需要同步的mysql binlog数据;
19、当binlog数据中操作类型为delete,则调用redis删除接口,删除该条缓存;当binlog数据中操作类型为insert或update,则根据规则配置的redis数据格式组装redis数据的key及value;
20、调用redis添加数据接口,将组装好的redis数据发送至redis服务。
21、本发明公开了一种mysql数据实时同步至redis缓存的系统,包括:
22、获取模块,用于canal捕获mysql数据变化,获取mysql变化数据,并将所述mysql变化数据发送至kafka主题;
23、配置模块,用于配置同步规则;
24、同步模块,用于通过flink作业根据同步规则,将kafka主题中的mysql变化数据同步至redis缓存。
25、本发明所述的mysql数据实时同步至redis缓存的系统进一步改进在于:
26、进一步的,所述获取模块包括:
27、第一读取模块,用于在服务器上安装canal服务,并配置canal连接到mysql数据库,读取mysql binlog日志;
28、解析模块,用于canal解析mysql binlog日志,捕获mysql变化数据,并生成json格式消息;
29、发送模块,用于canal将mysql变化数据以json格式消息发送到kafka主题。
30、进一步的,所述配置模块包括:
31、第二读取模块,用于读取mysql数据源的表和表字段信息,选择需要同步的表步、表中需要同步的字段以及设置的数据过滤条件;
32、定义模块,用于定义redis缓存中key和value的数据格式;
33、存储模块,用于将同步规则存储到关系型数据库中,以供flink作业使用。
34、进一步的,所述同步模块包括:
35、创建模块,用于创建flink作业,订阅kafka主题,实时读取mysql变化数据;
36、设置模块,用于flink作业启动后读取关系型数据库中保存的同步规则,获取要同步到redis缓存的表、字段、数据过滤条件以及redis数据格式,同时在flink作业中设置每小时定时读取已保存同步规则;
37、匹配模块,用于根据同步规则中设置的过滤条件,匹配需要同步的mysql binlog数据;
38、组装模块,用于当binlog数据中操作类型为delete,则调用redis删除接口,删除该条缓存;当binlog数据中操作类型为insert或update,则根据规则配置的redis数据格式组装redis数据的key及value;
39、调用模块,用于调用redis添加数据接口,将组装好的redis数据发送至redis服务。
40、本发明公开了一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现所述mysql数据实时同步至redis缓存的方法的步骤。
41、本发明公开了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现所述mysql数据实时同步至redis缓存的方法的步骤。
42、本发明具有以下有益效果:
43、本发明所述的mysql数据实时同步至redis缓存的方法、系统、设备及介质在具体操作时,通过使用canal、kafka和flink技术实现高效、稳定、灵活的mysql数据实时同步至redis缓存,具体的,通过配置需要同步的mysql数据以及redis数据格式,适应不同的应用场景需求。另外,通过canal实时捕获mysql的binlog变化,并通过kafka和flink实现数据的实时传输和处理,确保数据在mysql和redis之间的同步具有高度的实时性。
1.一种mysql数据实时同步至redis缓存的方法,其特征在于,包括:
2.根据权利要求1所述的mysql数据实时同步至redis缓存的方法,其特征在于,所述canal捕获mysql数据变化,获取mysql变化数据,并将所述mysql变化数据发送至kafka主题的过程为:
3.根据权利要求1所述的mysql数据实时同步至redis缓存的方法,其特征在于,所述配置同步规则的过程为:
4.根据权利要求1所述的mysql数据实时同步至redis缓存的方法,其特征在于,所述通过flink作业根据同步规则,将kafka主题中的mysql变化数据同步至redis缓存过程为:
5.一种mysql数据实时同步至redis缓存的系统,其特征在于,包括:
6.根据权利要求5所述的mysql数据实时同步至redis缓存的系统,其特征在于,所述获取模块包括:
7.根据权利要求5所述的mysql数据实时同步至redis缓存的系统,其特征在于,所述配置模块包括:
8.根据权利要求5所述的mysql数据实时同步至redis缓存的系统,其特征在于,所述同步模块包括:
9.一种计算机设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-4任一项所述mysql数据实时同步至redis缓存的方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1-4任一项所述mysql数据实时同步至redis缓存的方法的步骤。