数据同步方法、装置、计算机设备、存储介质和程序产品制造方法及图纸

技术编号:33042526 阅读:51 留言:0更新日期:2022-04-15 09:24
本申请涉及一种数据同步方法、装置、计算机设备、存储介质和程序产品。所述方法包括:接收数据变更请求;根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表;根据所述数据变更请求对数据库中的数据进行变更操作;将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁。采用本方法支持缓存和数据库的数据一致。法支持缓存和数据库的数据一致。法支持缓存和数据库的数据一致。

【技术实现步骤摘要】
数据同步方法、装置、计算机设备、存储介质和程序产品


[0001]本申请涉及数据库
,特别是涉及一种数据同步方法、装置、计算机设备、存储介质和程序产品。

技术介绍

[0002]随着移动互联网和智能设备的快速发展和普及,互联网应用的服务器处理数据的压力越来越大,同时用户对请求响应时间的要求也愈加苛刻。在网络延迟优化和硬件性能提升已达一定瓶颈的背景下,基于Redis、Memcached等的缓存技术已成为提升并发性能和应用响应速度的主要手段之一。然而在数据库发生增删改数据更新操作时如何实现缓存与数据库之间的数据同步,以避免应用层通过缓存读取到脏数据,成为亟待解决的问题。
[0003]目前缓存与数据库之间的数据同步方式有:Cache Aside Pattern、Read/Write Through Pattern、Write Behind和通过Binlog集中更新等。其中主流的Cache Aside Pattern同步方法会在每次读取数据时,都先访问缓存Cache,如果缓存命中,则直接返回数据,如果缓存未命中则去数据库中查询,并存储到缓存中以便下次请求可以直接命中缓存并返回数据;而在进行增删改数据更新操作时,则选择先将变更写入到数据库中,然后再删除缓存中对应的相关数据。而Write Behind则较为极端,这种方式在处理更新数据的请求时,直接更新缓存中的数据,不更新数据库,让另外一个服务异步地将数据更新到数据库。集中更新则相反,如Canal中间件,设计一个服务,通过读取并解析数据库的Binlog,主动将新的数据更新到缓存中。
[0004]从数据一致性的角度出发,传统的缓存与数据库同步方案,在某些情况下仍会出现缓存与数据库数据不一致的现象。如上述的Cache Aside Pattern同步方式,采用先更新数据库再删除缓存的方式,那么在更新数据库和清除缓存之间的间隙,如果有发生查询请求,应用层就可能读取到缓存中尚未删除的脏数据。对于数据一致性要求较高的场景,传统的同步方法往往难以满足或者过于复杂。

技术实现思路

[0005]基于此,有必要针对上述技术问题,提供一种支持缓存和数据库的数据一致的数据同步方法、装置、计算机设备、存储介质和程序产品。
[0006]第一方面,本申请提供一种数据同步方法,所述方法包括:
[0007]接收数据变更请求;
[0008]根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表;
[0009]根据所述数据变更请求对数据库中的数据进行变更操作;
[0010]将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁。
[0011]在其中一个实施例中,所述方法还包括:
[0012]定时将所述数据库中的数据加载至缓存中。
[0013]在其中一个实施例中,所述定时将所述数据库中的数据加载至缓存中之前,还包括:
[0014]对待加载的数据表配置对应的定时加载任务;
[0015]所述定时将所述数据库中的数据加载至缓存中,包括:
[0016]根据所述定时加载任务获取待加载的数据;
[0017]将所述待加载的数据加载至缓存中。
[0018]在其中一个实施例中,所述接收数据变更请求,包括:
[0019]接收分布式事务处理请求;
[0020]所述根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表,包括:
[0021]判断所述分布式事务处理请求是否为所述数据变更请求;当所述分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表;
[0022]所述将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁,包括:
[0023]当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将所述数据库中的数据加载至缓存中,并对对应的所述数据表解锁。
[0024]在其中一个实施例中,所述方法还包括:
[0025]接收数据处理请求;
[0026]判断所述数据处理请求对应的数据表是否被锁定;
[0027]当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中数据;
[0028]当所述数据表被锁定时,跳过查询缓存,查询所述数据库得到目标数据,返回所述目标数据。
[0029]在其中一个实施例中,所述当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中的数据,包括:
[0030]查询加载缓存中是否存在对应的目标数据;所述加载缓存中存储有定时从所述数据库中加载的数据
[0031]当所述加载缓存中存在对应的目标数据时,返回所述目标数据;
[0032]当所述加载缓存存中不存在对应的目标数据时,继续查询查询缓存中是否存在对应的目标数据;所述查询缓存中缓存有最近的所述数据处理请求对应的目标数据;
[0033]当所述查询缓存中存在对应的目标数据时,返回所述目标数据。
[0034]第二方面,本申请提供一种数据同步装置,所述装置包括:
[0035]第一接收模块,用于接收数据变更请求;
[0036]锁定模块,用于根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表;
[0037]变更模块,用于根据所述数据变更请求对数据库中的数据进行变更操作;
[0038]解锁模块,用于将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁。
[0039]第三方面,本申请提供一种计算机设备,包括存储器和处理器,所述存储器存储有
计算机程序,所述处理器执行所述计算机程序时实现上述任意一个实施例中的方法的步骤。
[0040]第四方面,本申请提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
[0041]第五方面,本申请提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
[0042]上述数据同步方法、装置、计算机设备、存储介质和程序产品,在接收数据变更请求时,先将缓存中的对应数据删除,并锁定该数据表,此外还对数据库中的数据进行变更操作,在变更操作后,再加载到缓存中,这样即使数据存在变更,缓存中的数据也与数据库中的数据保持一致。
附图说明
[0043]图1为一个实施例中数据同步方法的应用环境图;
[0044]图2为一个实施例中数据同步方法的流程示意图;
[0045]图3为一个实施例中的数据增删改请求的处理流程的示意图;
[0046]图4为一个实施例中数据查询步骤的流程示意图;
[0047]图5为一个实施例中的某一数据表在数据库中的示意图;
[0048]图6为一个实施例中的某一数据表在缓存中的示意图;
[0049]图7为一个实施例中本文档来自技高网
...

【技术保护点】

【技术特征摘要】
1.一种数据同步方法,其特征在于,所述方法包括:接收数据变更请求;根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表;根据所述数据变更请求对数据库中的数据进行变更操作;将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁。2.根据权利要求1所述的方法,其特征在于,所述方法还包括:定时将所述数据库中的数据加载至缓存中。3.根据权利要求2所述的方法,其特征在于,所述定时将所述数据库中的数据加载至缓存中之前,还包括:对待加载的数据配置对应的定时加载任务;所述定时将所述数据库中的数据加载至缓存中,包括:根据所述定时加载任务获取待加载的数据;将所述待加载的数据加载至缓存中。4.根据权利要求1所述的方法,其特征在于,所述接收数据变更请求,包括:接收分布式事务处理请求;所述根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表,包括:判断所述分布式事务处理请求是否为数据变更请求;当所述分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表;所述将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁,包括:当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将所述数据库中的数据加载至缓存中,并对对应的所述数据表解锁。5.根据权利要求1至4任意一项所述的方法,其特征在于,所述方法还包括:接收数据处理请求;判断所述数据处理请求对应的数据表是否被锁定;当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据...

【专利技术属性】
技术研发人员:席尧磊汪瀛寰吴德柱
申请(专利权)人:上海浦东发展银行股份有限公司
类型:发明
国别省市:

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

1