CN109857812A - 一种处理缓存中数据的方法和装置 - Google Patents
一种处理缓存中数据的方法和装置 Download PDFInfo
- Publication number
- CN109857812A CN109857812A CN201910149801.7A CN201910149801A CN109857812A CN 109857812 A CN109857812 A CN 109857812A CN 201910149801 A CN201910149801 A CN 201910149801A CN 109857812 A CN109857812 A CN 109857812A
- Authority
- CN
- China
- Prior art keywords
- message
- target database
- message queue
- operation note
- caching
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例提供了一种处理缓存中数据的方法和装置,该方法包括:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。本申请实施例提供的一种处理缓存中数据的方法和装置,能够实时更新缓存数据。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种处理缓存中数据的方法和装置。
背景技术
在高并发的业务场景下,数据库通常是用户并发访问最薄弱的环节,因此需要进行缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。Redis是开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、键值(英文:Key-Value)数据库。在用户访问数据时,先判断是否有缓存数据,如果有缓存数据,则直接返回缓存数据;如果没有缓存数据,则从数据库中加载数据,并将数据写入缓存,再将该数据返回。
基于此,本发明的发明人发现,如果数据库数据插入新数据,一般会在第一次用户请求时才会同步到缓存中,缓存数据更新存在时延。
公开于该背景技术部分的信息仅仅旨在增加对本发明的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
发明内容
本申请实施例的目的是提供一种处理缓存中数据的方法和装置,能够保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。
为解决上述技术问题,本申请实施例是通过以下各方面实现的。
第一方面,本申请实施例提供了一种处理缓存中数据的方法,包括:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
第二方面,本申请实施例提供了一种处理缓存中数据的装置,包括:生产者模块,用于通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;消费者模块,用于通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
第三方面,本申请实施例提供了一种电子设备,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如上述第一方面所述的方法的步骤。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现如上述第一方面所述的方法的步骤。
在本申请实施例中,通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除,保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1示出本申请实施例提供的一种处理缓存中数据的方法的一种流程示意图;
图2示出本申请实施例提供的一种处理缓存中数据的方法的另一种流程示意图;
图3示出本申请实施例提供的一种处理缓存中数据的方法的另一种流程示意图;
图4示出本申请实施例提供的一种处理缓存中数据的装置的结构示意图;
图5示出本申请实施例提供的一种处理缓存中数据的装置的另一种结构示意图;
图6示出执行本申请实施例提供的一种处理缓存中数据的方法的电子设备的硬件结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1示出本申请实施例提供的一种处理缓存中数据的方法的一种流程示意图,该方法可以由电子设备执行,例如终端设备或服务端设备。换言之,所述方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。如图所示,该方法可以包括以下步骤。
S10:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列。
例如,可以解析MySQL的binlog日志,MySQL是RDBMS(英文:Relational DatabaseManagement System,中文:关系目标数据库管理系统)的应用软件。MySQL是一种关系目标数据库管理系统,关系目标数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysql binlog是二进制格式的日志文件,用来记录Mysql内部对目标数据库的改动,只记录对数据的修改操作,对库表等内容的查询不会记录,主要用于目标数据库的主从复制以及增量恢复。读取binlog既可以获取到需要的更新信息,又不会对业务逻辑造成侵入,不会对目标数据库操作造成干扰。
binlog日志通常默认存放位置为目标数据库文件所在目录下,文件的命名通常为hostname-bin.xxxxx,重启Mysql一次将会自动生成一个新的binlog日志。Mysql binlog日志有一下三种格式:
1.状态(英文:Statement):每一条会修改数据的sql都会记录在binlog中,该日志格式不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。
2.行(英文:Row):该日志格式不记录sql语句上下文相关信息,仅保存哪条记录被修改。binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了,所以row的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程。
3.混合水平(英文:Mixed level):是以上两种格式的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。
本步骤中,将所述消息对象发送至消息队列,消息队列保存该消息对象。
S20:通过第二进程读取消息队列中的消息对象。
S30:通过所述第二进程解析所述消息对象,还原所述操作记录。
S40:通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
在本申请实施例中,只要目标数据库的日志文件发生了变化,缓存数据也将实时地进行对应的操作,而无需等待变化数据被调用,保证了目标数据库数据和缓存数据的一致性。
由此,本申请实施例提供的一种处理缓存中数据的方法,通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。
本申请实施例提供的一种处理缓存中数据的方法,通过第一进程操作目标数据库,通过第二进程操作缓存,由此能够将将操作目标数据库和操作缓存的步骤进行解耦,不会对目标数据库操作造成额外的延时。
图2示出本申请实施例提供的一种处理缓存中数据的方法的另一种流程示意图,该方法可以由电子设备执行,例如终端设备或服务端设备。换言之,所述方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。如图所示,该方法可以包括以下步骤。
S10:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列。
例如,可以解析MySQL的binlog日志,MySQL是RDBMS(英文:Relational DatabaseManagement System,中文:关系目标数据库管理系统)的应用软件。MySQL是一种关系目标数据库管理系统,关系目标数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysql binlog是二进制格式的日志文件,用来记录Mysql内部对目标数据库的改动,只记录对数据的修改操作,对库表等内容的查询不会记录,主要用于目标数据库的主从复制以及增量恢复。读取binlog既可以获取到需要的更新信息,又不会对业务逻辑造成侵入,不会对目标数据库操作造成干扰。
binlog日志通常默认存放位置为目标数据库文件所在目录下,文件的命名通常为hostname-bin.xxxxx,重启Mysql一次将会自动生成一个新的binlog日志。
在一种可能的实现方式中,本步骤可以包括步骤S11:通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,并将所述消息对象发送至消息队列排列在所述消息队列的末尾。
json(英文:JavaScript Object Notation,中文:JS对象简谱)是一种轻量级的数据交换格式。其基于ECMAScript(欧洲计算机协会制定的js规范)的一个子集,采用完全独立于编程语言的文本格式来存储和表示数据。json消息对象具有简洁和清晰的层次结构,易于人阅读和编写,也易于机器解析和生成,能够有效地提升网络传输效率。
在一种可能的实现方式中,操作类型type可以包括:插入、删除或更新中的至少一种。
在一种可能的实现方式中,可以利用消息对象调用消息队列的放置(英文:put)方法,将消息放到队列的末尾。消息队列是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。消息队列的主要目的是提供路由并保证消息的传递。
S20:通过第二进程读取消息队列中的消息对象。
本步骤可以包括步骤S21:通过消费者Consumer进程顺序地读取消息队列中的消息对象。
先进入消息队列的消息对象会先被读取到,由此,保持和目标数据库的操作时序一致。
S30:通过所述第二进程解析所述消息对象,还原所述操作记录。
本步骤可以包括步骤S31:通过消费者Consumer进程解析所述消息对象,还原所述操作记录。
操作记录可以包括对特定数据的插入、更新、删除。
S40:通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
第二进程可以为Consumer进程。
本申请实施例中,只要目标数据库的日志文件发生了变化,缓存数据也将实时地进行对应的操作,而无需等待变化数据被调用,保证了目标数据库数据和缓存数据的一致性。
由此,本申请实施例提供的一种处理缓存中数据的方法,通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除能够保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。
本申请实施例提供的一种处理缓存中数据的方法,通过第一进程操作目标数据库,通过第二进程操作缓存,由此能够将将操作目标数据库和操作缓存的步骤进行解耦,不会对目标数据库操作造成额外的延时。
此外,本申请实施例提供的一种处理缓存中数据的方法,通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,能够使得消息对象具有简洁和清晰的层次结构,易于人阅读和编写,也易于机器解析和生成,能够有效地提升网络传输效率。
此外,本申请实施例提供的一种处理缓存中数据的方法,通过生产者Producer进程将所述消息对象发送至消息队列排列在所述消息队列的末尾,通过消费者Consumer进程顺序地读取消息队列中的消息对象,使得先进入消息队列的消息对象会先被读取到,由此,保持和目标数据库的操作时序一致。
图3示出本申请实施例提供的一种处理缓存中数据的方法的另一种流程示意图,该方法可以由电子设备执行,例如终端设备或服务端设备。换言之,所述方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。如图所示,该方法可以包括以下步骤。
S10:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列。
例如,可以解析MySQL的binlog日志,MySQL是RDBMS(英文:Relational DatabaseManagement System,中文:关系目标数据库管理系统)的应用软件。MySQL是一种关系目标数据库管理系统,关系目标数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysql binlog是二进制格式的日志文件,用来记录Mysql内部对目标数据库的改动,只记录对数据的修改操作,对库表等内容的查询不会记录,主要用于目标数据库的主从复制以及增量恢复。读取binlog既可以获取到需要的更新信息,又不会对业务逻辑造成侵入,不会对目标数据库操作造成干扰。
binlog日志通常默认存放位置为目标数据库文件所在目录下,文件的命名通常为hostname-bin.xxxxx,重启Mysql一次将会自动生成一个新的binlog日志。
在一种可能的实现方式中,本步骤可以通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,并将所述消息对象发送至消息队列排列在所述消息队列的末尾。
在一种可能的实现方式中,操作类型type可以包括:插入、删除或更新中的至少一种。
在一种可能的实现方式中,可以利用消息对象调用消息队列的put方法,将消息放到队列的末尾。消息队列是在消息的传输过程中保存消息的容器。消息队列管理器在将消息从它的源中继到它的目标时充当中间人。消息队列的主要目的是提供路由并保证消息的传递。
S20:通过第二进程读取消息队列中的消息对象。
通过消费者Consumer进程顺序地读取消息队列中的消息对象。先进入消息队列的消息会先被读取到,由此,保持和目标数据库的操作时序一致。
S30:通过所述第二进程解析所述消息对象,还原所述操作记录。
通过消费者Consumer进程解析所述消息对象,还原所述操作记录(插入、更新、删除)。
S40:通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
本申请实施例中,只要目标数据库的日志文件发生了变化,缓存数据也将实时地进行对应的操作,而无需等待变化数据被调用,保证了目标数据库数据和缓存数据的一致性。
S50:当所述对应的操作成功时,删除所述消息队列中的所述消息对象。
缓存更新成功后,调用消息队列的删除方法,将已处理的消息对象删除,以免后面被重复消费。然后继续读取消息队列系统的下一条待处理的消息,持续更新缓存内容。
S60:当所述对应的操作失败时,在所述消息队列中保留所述消息对象,并再次读取所述消息队列中的所述消息对象。
若缓存更新失败,不需要从消息队列系统中删除当前消息对象。在下次读取消息队列系统消息时,仍会读取该消息,并进行处理,直到消息被处理成功,缓存数据被正确更新,以进一步保障缓存数据和mysql数据一致,避免更新或者删除缓存失败导致的目标数据库和缓存数据不一致。
以下举一个实例进行本申请实施例的说明。
例如:目标数据库中删除了一条记录,其字段名为pkgname,字段值为”com.apusapps.launcher”,数据删除完成后,mysql会将该删除语句放入binlog中。
在步骤10中:Producer进程从上次读取位置开始截取binlog内容,读取到该删除语句。
Producer进程将该操作记录封装成json对象
Producer进程将json对象发送到消息队列RabbitMQ中,继续执行步骤10;
在步骤20中:Consumer进程读取从消息队列RabbitMQ中的最新消息;
在步骤30中,Consumer进程解析json对象
变成操作命令“DEL”,KEY_NAME为“com.apusapps.launcher”
在步骤40中,Consumer进程执行“DEL com.apusapps.launcher”删除指定数据;
在步骤50中,Consumer进程收到Redis删除成功的返回后,删除消息队列RabbitMQ中的已处理的消息对象,继续步骤20处理新的消息;
在步骤60中,Consumer进程收到Redis删除失败的返回后,则不删除消息队列RabbitMQ中的消息对象,继续步骤20重新处理该消息。
由此,本申请实施例提供的一种处理缓存中数据的方法,通过通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除能够保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。本申请实施例提供的一种处理缓存中数据的方法,通过第一进程操作目标数据库,通过第二进程操作缓存,由此能够将将操作目标数据库和操作缓存的步骤进行解耦,不会对目标数据库操作造成额外的延时。
此外,本申请实施例提供的一种处理缓存中数据的方法,通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,能够使得消息对象具有简洁和清晰的层次结构,易于人阅读和编写,也易于机器解析和生成,能够有效地提升网络传输效率。
此外,本申请实施例提供的一种处理缓存中数据的方法,通过生产者Producer进程将所述消息对象发送至消息队列排列在所述消息队列的末尾,通过消费者Consumer进程顺序地读取消息队列中的消息对象,使得先进入消息队列的消息对象会先被读取到,由此,保持和目标数据库的操作时序一致。
此外,本申请实施例提供的一种处理缓存中数据的方法,通过当对应的操作成功时,删除所述消息队列中的所述消息对象,能够避免消息对象被重复消费。
此外,本申请实施例提供的一种处理缓存中数据的方法,通过当所述对应的操作失败时,在所述消息队列中保留所述消息对象,并再次读取所述消息队列中的所述消息对象,能够确保缓存数据被正确更新,以进一步保障缓存数据和目标数据库数据一致。
图4示出本申请实施例提供的一种处理缓存中数据的装置的结构示意图,该装置100包括:生产者模块110和消费者模块120。
生产者模块110用于通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列。消费者模块120用于通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
由此,本申请实施例提供的一种处理缓存中数据的方法,通过生产者模块110用于通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列,消费者模块120用于通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除能够保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。本申请实施例提供的一种处理缓存中数据的方法,通过第一进程操作目标数据库,通过第二进程操作缓存,由此能够将将操作目标数据库和操作缓存的步骤进行解耦,不会对目标数据库操作造成额外的延时。
图5示出本申请实施例提供的一种处理缓存中数据的装置的结构示意图,该装置100包括:生产者模块110、消费者模块120和消息队列模块130。
生产者模块110用于通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列。消费者模块120用于通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。消息队列模块130用于在通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作之后,当所述对应的操作成功时,删除所述消息队列中的所述消息对象。
在一种可能的实现方式中,消息队列模块130还用于在通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作之后,当所述对应的操作失败时,在所述消息队列中保留所述消息对象,并再次读取所述消息队列中的所述消息对象。
在一种可能的实现方式中,生产者模块110用于通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,并将所述消息对象发送至消息队列排列在所述消息队列的末尾。
在一种可能的实现方式中,消费者模块用于通过消费者Consumer进程顺序地读取消息队列中的消息对象。
在一种可能的实现方式中,生产者模块110获得的所述目标数据库的操作记录包括对目标数据库中的指定对象进行插入、更新或者删除的记录。
本申请实施例提供的该装置100,可执行前文方法实施例中所述的各方法,并实现前文方法实施例中所述的各方法的功能和有益效果,在此不再赘述。
图6示出执行本申请实施例提供的一种处理缓存中数据的方法的电子设备的硬件结构示意图,如图所示,该电子设备可因配置或性能不同而产生比较大的差异,可以包括一个或一个以上的处理器701和存储器702,存储器702中可以存储有一个或一个以上存储应用程序或数据。其中,存储器702可以是短暂存储或持久存储。存储在存储器702的应用程序可以包括一个或一个以上模块(图示未示出),每个模块可以包括对该电子设备中的一系列计算机可执行指令。更进一步地,处理器701可以设置为与存储器702通信,在该电子设备上执行存储器702中的一系列计算机可执行指令。该电子设备还可以包括一个或一个以上电源703,一个或一个以上有线或无线网络接口704,一个或一个以上输入输出接口705,一个或一个以上键盘706等。
在一个具体的实施例中,该电子设备包括存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现以下流程:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
由此,执行本申请实施例提供的一种处理缓存中数据的方法的电子设备可执行前文方法实施例中所述的各方法,并实现前文方法实施例中所述的各方法的功能和有益效果,在此不再赘述。
本申请实施例的电子设备以多种形式存在,包括但不限于服务器:提供计算服务的设备,服务器的构成包括处理器、硬盘、内存、系统总线等,服务器和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。
进一步地,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现以下流程:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
由此,所述计算机可执行指令被处理器执行时能够执行前文方法实施例中所述的各方法,并实现前文方法实施例中所述的各方法的功能和有益效果,在此不再赘述。
其中,所述的计算机可读存储介质包括只读存储器(Read-Only Memory,简称ROM)、随机存取存储器(Random Access Memory,简称RAM)、磁碟或者光盘等。
进一步地,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,实现以下流程:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
由此,执行本申请实施例提供的计算机程序产品能够执行前文方法实施例中所述的各方法,并实现前文方法实施例中所述的各方法的功能和有益效果,在此不再赘述。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。
Claims (10)
1.一种处理缓存中数据的方法,其特征在于,包括:
通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;
通过第二进程读取所述消息队列中的消息对象;
通过所述第二进程解析所述消息对象,还原所述操作记录;
通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
2.根据权利要求1所述的方法,其特征在于,还包括:
当所述对应的操作成功时,删除所述消息队列中的所述消息对象;
当所述对应的操作失败时,在所述消息队列中保留所述消息对象,并再次读取所述消息队列中的所述消息对象。
3.根据权利要求1所述的方法,其特征在于,将所述操作记录封装为消息对象,并将所述消息对象发送至消息队列包括:
通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,并将所述消息对象发送至消息队列排列在所述消息队列的末尾。
4.根据权利要求3所述的方法,其特征在于,所述通过第二进程读取消息队列中的消息对象包括:
通过消费者Consumer进程顺序地读取消息队列中的消息对象。
5.根据权利要求1所述的方法,其特征在于,所述目标数据库的操作记录包括对目标数据库中的指定对象进行插入、更新或者删除的记录。
6.一种处理缓存中数据的装置,其特征在于,包括:
生产者模块,用于通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;
消费者模块,用于通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。
7.根据权利要求6所述的装置,其特征在于,还包括:
消息队列模块,用于当所述对应的操作成功时,删除所述消息队列中的所述消息对象;
所述消息队列模块还用于当所述对应的操作失败时,在所述消息队列中保留所述消息对象,并再次读取所述消息队列中的所述消息对象。
8.根据权利要求6所述的装置,其特征在于,所述生产者模块用于通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,并将所述消息对象发送至消息队列排列在所述消息队列的末尾。
9.根据权利要求6所述的装置,其特征在于,所述消费者模块用于通过消费者Consumer进程顺序地读取消息队列中的消息对象。
10.根据权利要求6所述的装置,其特征在于,所述生产者模块获得的所述目标数据库的操作记录包括对目标数据库中的指定对象进行插入、更新或者删除的记录。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149801.7A CN109857812A (zh) | 2019-02-27 | 2019-02-27 | 一种处理缓存中数据的方法和装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201910149801.7A CN109857812A (zh) | 2019-02-27 | 2019-02-27 | 一种处理缓存中数据的方法和装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN109857812A true CN109857812A (zh) | 2019-06-07 |
Family
ID=66899388
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201910149801.7A Pending CN109857812A (zh) | 2019-02-27 | 2019-02-27 | 一种处理缓存中数据的方法和装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN109857812A (zh) |
Cited By (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427510A (zh) * | 2019-08-09 | 2019-11-08 | 上海天诚比集科技有限公司 | 基于共享操作日志的人脸特征更新方法 |
CN111008244A (zh) * | 2019-11-22 | 2020-04-14 | 厦门安胜网络科技有限公司 | 一种用于数据库的同步和分析方法及系统 |
CN111078717A (zh) * | 2019-12-20 | 2020-04-28 | 深圳前海环融联易信息科技服务有限公司 | 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 |
CN111510680A (zh) * | 2020-04-23 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 一种图像数据的处理方法、系统及存储介质 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、系统及存储介质 |
CN111694799A (zh) * | 2020-04-30 | 2020-09-22 | 武汉达梦数据库有限公司 | 基于日志解析同步的并行日志解析方法和数据同步系统 |
CN111797119A (zh) * | 2020-05-19 | 2020-10-20 | 武汉乐程软工科技有限公司 | 一种缓存装置、系统及缓存方法 |
CN111858640A (zh) * | 2020-07-30 | 2020-10-30 | 平安国际智慧城市科技股份有限公司 | 一种数据管理方法、数据管理装置、电子设备及存储介质 |
CN112000640A (zh) * | 2020-07-29 | 2020-11-27 | 北京浪潮数据技术有限公司 | 一种记录对象操作信息的方法、装置和介质 |
CN112487037A (zh) * | 2020-12-08 | 2021-03-12 | 平安国际智慧城市科技股份有限公司 | 缓存数据的处理方法、装置、计算机设备及存储介质 |
CN113489635A (zh) * | 2021-06-18 | 2021-10-08 | 深圳软牛科技有限公司 | 基于微信的消息恢复方法和相关设备 |
CN113641690A (zh) * | 2021-08-10 | 2021-11-12 | 南威软件股份有限公司 | 一种跨应用缓存更新方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014059804A1 (zh) * | 2012-10-18 | 2014-04-24 | 腾讯科技(深圳)有限公司 | 数据同步方法及系统 |
CN106484869A (zh) * | 2016-10-12 | 2017-03-08 | 北京集奥聚合科技有限公司 | 一种基于mysql binlog的分布式缓存方法及系统 |
CN107341212A (zh) * | 2017-06-26 | 2017-11-10 | 努比亚技术有限公司 | 一种缓存更新方法及设备 |
CN108491332A (zh) * | 2018-04-04 | 2018-09-04 | 浙江小泰科技有限公司 | 一种基于Redis的实时缓存更新方法和系统 |
-
2019
- 2019-02-27 CN CN201910149801.7A patent/CN109857812A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2014059804A1 (zh) * | 2012-10-18 | 2014-04-24 | 腾讯科技(深圳)有限公司 | 数据同步方法及系统 |
CN106484869A (zh) * | 2016-10-12 | 2017-03-08 | 北京集奥聚合科技有限公司 | 一种基于mysql binlog的分布式缓存方法及系统 |
CN107341212A (zh) * | 2017-06-26 | 2017-11-10 | 努比亚技术有限公司 | 一种缓存更新方法及设备 |
CN108491332A (zh) * | 2018-04-04 | 2018-09-04 | 浙江小泰科技有限公司 | 一种基于Redis的实时缓存更新方法和系统 |
Non-Patent Citations (1)
Title |
---|
仇臣: "Docker容器的性能监控和日志服务的设计与实现", 《中国优秀硕士学位论文全文数据库 信息科技辑》 * |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110427510A (zh) * | 2019-08-09 | 2019-11-08 | 上海天诚比集科技有限公司 | 基于共享操作日志的人脸特征更新方法 |
CN111008244A (zh) * | 2019-11-22 | 2020-04-14 | 厦门安胜网络科技有限公司 | 一种用于数据库的同步和分析方法及系统 |
CN111078717A (zh) * | 2019-12-20 | 2020-04-28 | 深圳前海环融联易信息科技服务有限公司 | 数据库与缓存的一致性同步方法、装置、计算机设备及存储介质 |
CN111563102A (zh) * | 2020-04-10 | 2020-08-21 | 中国联合网络通信集团有限公司 | 缓存更新方法、服务器、系统及存储介质 |
CN111510680A (zh) * | 2020-04-23 | 2020-08-07 | 腾讯科技(深圳)有限公司 | 一种图像数据的处理方法、系统及存储介质 |
CN111694799B (zh) * | 2020-04-30 | 2023-04-25 | 武汉达梦数据库股份有限公司 | 基于日志解析同步的并行日志解析方法和数据同步系统 |
CN111694799A (zh) * | 2020-04-30 | 2020-09-22 | 武汉达梦数据库有限公司 | 基于日志解析同步的并行日志解析方法和数据同步系统 |
CN111797119A (zh) * | 2020-05-19 | 2020-10-20 | 武汉乐程软工科技有限公司 | 一种缓存装置、系统及缓存方法 |
CN111797119B (zh) * | 2020-05-19 | 2024-01-30 | 武汉乐程软工科技有限公司 | 一种缓存装置、系统及缓存方法 |
CN112000640A (zh) * | 2020-07-29 | 2020-11-27 | 北京浪潮数据技术有限公司 | 一种记录对象操作信息的方法、装置和介质 |
CN111858640A (zh) * | 2020-07-30 | 2020-10-30 | 平安国际智慧城市科技股份有限公司 | 一种数据管理方法、数据管理装置、电子设备及存储介质 |
CN111858640B (zh) * | 2020-07-30 | 2024-05-10 | 深圳平安智慧医健科技有限公司 | 一种数据管理方法、数据管理装置、电子设备及存储介质 |
CN112487037A (zh) * | 2020-12-08 | 2021-03-12 | 平安国际智慧城市科技股份有限公司 | 缓存数据的处理方法、装置、计算机设备及存储介质 |
CN113489635A (zh) * | 2021-06-18 | 2021-10-08 | 深圳软牛科技有限公司 | 基于微信的消息恢复方法和相关设备 |
CN113489635B (zh) * | 2021-06-18 | 2023-08-18 | 深圳软牛科技有限公司 | 基于微信的消息恢复方法和相关设备 |
CN113641690A (zh) * | 2021-08-10 | 2021-11-12 | 南威软件股份有限公司 | 一种跨应用缓存更新方法 |
CN113641690B (zh) * | 2021-08-10 | 2023-10-27 | 南威软件股份有限公司 | 一种跨应用缓存更新方法 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109857812A (zh) | 一种处理缓存中数据的方法和装置 | |
CN107402963B (zh) | 搜索数据的构建方法、增量数据的推送方法及装置和设备 | |
US8983919B2 (en) | Systems and methods for improving database performance | |
US7587400B2 (en) | Suspending a result set and continuing from a suspended result set for transparent session migration | |
US11442920B2 (en) | Graph database system | |
CN105956166B (zh) | 数据库读写方法和读写装置 | |
US9507810B2 (en) | Updating database schemas in a zero-downtime environment | |
CN110647579A (zh) | 数据同步方法及装置、计算机设备与可读介质 | |
CN105373541B (zh) | 数据库的数据操作请求的处理方法和系统 | |
WO2021184761A1 (zh) | 数据访问方法和装置、数据存储方法和装置 | |
CN101277272B (zh) | 一种海量广播数据入库的实现方法 | |
CN109189852A (zh) | 一种数据同步的方法及用于数据同步的装置 | |
CN112084258A (zh) | 一种数据同步方法和装置 | |
US20160179919A1 (en) | Asynchronous data replication using an external buffer table | |
CN110515774A (zh) | 内存快照的生成方法、装置、电子设备及存储介质 | |
CN113868028A (zh) | 一种在数据节点上回放日志的方法、数据节点及系统 | |
US8600990B2 (en) | Interacting methods of data extraction | |
US9928259B2 (en) | Deleted database record reuse | |
CN109885585A (zh) | 支持存储过程、触发器与视图的分布式数据库系统和方法 | |
US7958083B2 (en) | Interacting methods of data summarization | |
US20060036616A1 (en) | Suspending a result set and continuing from a suspended result set for scrollable cursors | |
WO2023103432A1 (zh) | 代码文件编辑方法、装置、电子设备以及存储介质 | |
US7613710B2 (en) | Suspending a result set and continuing from a suspended result set | |
US11789971B1 (en) | Adding replicas to a multi-leader replica group for a data set | |
KR20210033880A (ko) | 인덱스 리두 로그를 이용한 인덱스 복구를 위한 방법, 서버 및 컴퓨터 판독가능 저장매체 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20190607 |
|
RJ01 | Rejection of invention patent application after publication |