一种处理缓存中数据的方法和装置制造方法及图纸

技术编号:21298891 阅读:30 留言:0更新日期:2019-06-12 07:45
本申请实施例提供了一种处理缓存中数据的方法和装置,该方法包括:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。本申请实施例提供的一种处理缓存中数据的方法和装置,能够实时更新缓存数据。

A Method and Device for Processing Data in Cache

The embodiment of this application provides a method and device for processing data in the cache. The method includes: parsing the log of the target database by the first process, obtaining the operation record of the target database, encapsulating the operation record synchronously as a message object, and storing the message object to the message queue in real time; reading the message pair in the message queue by the second process. For example, the message object is parsed by the second process, and the operation record is restored; the operation corresponding to the operation record is performed on the designated data object in the cache by the second process, so that the designated data object is synchronized when it is written to the cache from the target database, and the corresponding operation includes insertion, update or deletion. The embodiment of this application provides a method and device for processing data in the cache, which can update the cached data in real time.

【技术实现步骤摘要】
一种处理缓存中数据的方法和装置
本申请涉及数据处理
,尤其涉及一种处理缓存中数据的方法和装置。
技术介绍
在高并发的业务场景下,数据库通常是用户并发访问最薄弱的环节,因此需要进行缓冲操作,让请求先访问到redis,而不是直接访问MySQL等数据库。Redis是开源的使用ANSIC语言编写、支持网络、可基于内存亦可持久化的日志型、键值(英文:Key-Value)数据库。在用户访问数据时,先判断是否有缓存数据,如果有缓存数据,则直接返回缓存数据;如果没有缓存数据,则从数据库中加载数据,并将数据写入缓存,再将该数据返回。基于此,本专利技术的专利技术人发现,如果数据库数据插入新数据,一般会在第一次用户请求时才会同步到缓存中,缓存数据更新存在时延。公开于该
技术介绍
部分的信息仅仅旨在增加对本专利技术的总体背景的理解,而不应当被视为承认或以任何形式暗示该信息构成已为本领域一般技术人员所公知的现有技术。
技术实现思路
本申请实施例的目的是提供一种处理缓存中数据的方法和装置,能够保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。为解决上述技术问题,本申请实施例是通过以下各方面实现的。第一方面,本申请实施例提供了一种处理缓存中数据的方法,包括:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。第二方面,本申请实施例提供了一种处理缓存中数据的装置,包括:生产者模块,用于通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;消费者模块,用于通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。第三方面,本申请实施例提供了一种电子设备,包括:存储器、处理器和存储在所述存储器上并可在所述处理器上运行的计算机可执行指令,所述计算机可执行指令被所述处理器执行时实现如上述第一方面所述的方法的步骤。第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质用于存储计算机可执行指令,所述计算机可执行指令被处理器执行时实现如上述第一方面所述的方法的步骤。在本申请实施例中,通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除,保证目标数据库操作成功后同步更新缓存,提高了数据传输中的一致性。附图说明为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。图1示出本申请实施例提供的一种处理缓存中数据的方法的一种流程示意图;图2示出本申请实施例提供的一种处理缓存中数据的方法的另一种流程示意图;图3示出本申请实施例提供的一种处理缓存中数据的方法的另一种流程示意图;图4示出本申请实施例提供的一种处理缓存中数据的装置的结构示意图;图5示出本申请实施例提供的一种处理缓存中数据的装置的另一种结构示意图;图6示出执行本申请实施例提供的一种处理缓存中数据的方法的电子设备的硬件结构示意图。具体实施方式为了使本
的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。图1示出本申请实施例提供的一种处理缓存中数据的方法的一种流程示意图,该方法可以由电子设备执行,例如终端设备或服务端设备。换言之,所述方法可以由安装在终端设备或服务端设备的软件或硬件来执行。所述服务端包括但不限于:单台服务器、服务器集群、云端服务器或云端服务器集群等。如图所示,该方法可以包括以下步骤。S10:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列。例如,可以解析MySQL的binlog日志,MySQL是RDBMS(英文:RelationalDatabaseManagementSystem,中文:关系目标数据库管理系统)的应用软件。MySQL是一种关系目标数据库管理系统,关系目标数据库将数据保存在不同的表中,而不是将所有数据放在一个大仓库内,这样就增加了速度并提高了灵活性。Mysqlbinlog是二进制格式的日志文件,用来记录Mysql内部对目标数据库的改动,只记录对数据的修改操作,对库表等内容的查询不会记录,主要用于目标数据库的主从复制以及增量恢复。读取binlog既可以获取到需要的更新信息,又不会对业务逻辑造成侵入,不会对目标数据库操作造成干扰。binlog日志通常默认存放位置为目标数据库文件所在目录下,文件的命名通常为hostname-bin.xxxxx,重启Mysql一次将会自动生成一个新的binlog日志。Mysqlbinlog日志有一下三种格式:1.状态(英文:Statement):每一条会修改数据的sql都会记录在binlog中,该日志格式不需要记录每一行的变化,减少了binlog日志量,节约了IO,提高性能。2.行(英文:Row):该日志格式不记录sql语句上下文相关信息,仅保存哪条记录被修改。binlog中可以不记录执行的sql语句的上下文相关的信息,仅需要记录那一条记录被修改成什么了,所以row的日志内容会非常清楚的记录下每一行数据修改的细节。而且不会出现某些特定情况下的存储过程。3.混合水平(英文:Mixedlevel):是以上两种格式的混合使用,一般的语句修改使用statment格式保存binlog,如一些函数,statement无法完成主从复制的操作,则采用row格式保存binlog,MySQL会根据执行的每一条具体的sql语句来区分对待记录的日志形式,也就是在Statement和Row之间选择一种。本步骤中,将所述消息对象发送至消息队列,消息队列保存该消息对象。S20:通过第二进程读取消息队列中的消息对象。S30:通过所述第二进程解析所述消息对象,还原所述操作记录。S40:本文档来自技高网
...

【技术保护点】
1.一种处理缓存中数据的方法,其特征在于,包括:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。

【技术特征摘要】
1.一种处理缓存中数据的方法,其特征在于,包括:通过第一进程解析目标数据库的日志,获得目标数据库的操作记录,并将所述操作记录同步封装为消息对象,并将所述消息对象实时存储至消息队列;通过第二进程读取所述消息队列中的消息对象;通过所述第二进程解析所述消息对象,还原所述操作记录;通过所述第二进程对缓存中的指定数据对象执行与所述操作记录对应的操作,以使所述指定数据对象从所述目标数据库写入缓存时保持同步,所述对应的操作包括插入、更新或者删除。2.根据权利要求1所述的方法,其特征在于,还包括:当所述对应的操作成功时,删除所述消息队列中的所述消息对象;当所述对应的操作失败时,在所述消息队列中保留所述消息对象,并再次读取所述消息队列中的所述消息对象。3.根据权利要求1所述的方法,其特征在于,将所述操作记录封装为消息对象,并将所述消息对象发送至消息队列包括:通过生产者Producer进程解析目标数据库的日志获得目标数据库的操作记录,根据操作类型type、字段field和值value将所述操作记录封装为json消息对象,并将所述消息对象发送至消息队列排列在所述消息队列的末尾。4.根据权利要求3所述的方法,其特征在于,所述通过第二进程读取消息队列中的消息对象包括:通过消费者Consumer进程顺序地读取消息队列中的消息对象。5.根据权利要求1所述的方法,其特征在于,所述目标数据库的操作记录包括对目标数据库中的指定对象进行插入、更新或者删除的记录。6.一种...

【专利技术属性】
技术研发人员:蔡智平李涛
申请(专利权)人:珠海天燕科技有限公司
类型:发明
国别省市:广东,44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1