数据同步方法、装置、计算机设备、存储介质和程序产品与流程

文档序号:29621815发布日期:2022-04-13 13:30阅读:67来源:国知局
数据同步方法、装置、计算机设备、存储介质和程序产品与流程

1.本技术涉及数据库技术领域,特别是涉及一种数据同步方法、装置、计算机设备、存储介质和程序产品。


背景技术:

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


技术实现要素:

5.基于此,有必要针对上述技术问题,提供一种支持缓存和数据库的数据一致的数据同步方法、装置、计算机设备、存储介质和程序产品。
6.第一方面,本技术提供一种数据同步方法,所述方法包括:
7.接收数据变更请求;
8.根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表;
9.根据所述数据变更请求对数据库中的数据进行变更操作;
10.将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁。
11.在其中一个实施例中,所述方法还包括:
12.定时将所述数据库中的数据加载至缓存中。
13.在其中一个实施例中,所述定时将所述数据库中的数据加载至缓存中之前,还包括:
14.对待加载的数据表配置对应的定时加载任务;
15.所述定时将所述数据库中的数据加载至缓存中,包括:
16.根据所述定时加载任务获取待加载的数据;
17.将所述待加载的数据加载至缓存中。
18.在其中一个实施例中,所述接收数据变更请求,包括:
19.接收分布式事务处理请求;
20.所述根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表,包括:
21.判断所述分布式事务处理请求是否为所述数据变更请求;当所述分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表;
22.所述将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁,包括:
23.当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将所述数据库中的数据加载至缓存中,并对对应的所述数据表解锁。
24.在其中一个实施例中,所述方法还包括:
25.接收数据处理请求;
26.判断所述数据处理请求对应的数据表是否被锁定;
27.当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中数据;
28.当所述数据表被锁定时,跳过查询缓存,查询所述数据库得到目标数据,返回所述目标数据。
29.在其中一个实施例中,所述当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中的数据,包括:
30.查询加载缓存中是否存在对应的目标数据;所述加载缓存中存储有定时从所述数据库中加载的数据
31.当所述加载缓存中存在对应的目标数据时,返回所述目标数据;
32.当所述加载缓存存中不存在对应的目标数据时,继续查询查询缓存中是否存在对应的目标数据;所述查询缓存中缓存有最近的所述数据处理请求对应的目标数据;
33.当所述查询缓存中存在对应的目标数据时,返回所述目标数据。
34.第二方面,本技术提供一种数据同步装置,所述装置包括:
35.第一接收模块,用于接收数据变更请求;
36.锁定模块,用于根据所述数据变更请求删除缓存中对应的数据,并锁定对应的数据表;
37.变更模块,用于根据所述数据变更请求对数据库中的数据进行变更操作;
38.解锁模块,用于将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁。
39.第三方面,本技术提供一种计算机设备,包括存储器和处理器,所述存储器存储有
计算机程序,所述处理器执行所述计算机程序时实现上述任意一个实施例中的方法的步骤。
40.第四方面,本技术提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
41.第五方面,本技术提供一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述任意一个实施例中的方法的步骤。
42.上述数据同步方法、装置、计算机设备、存储介质和程序产品,在接收数据变更请求时,先将缓存中的对应数据删除,并锁定该数据表,此外还对数据库中的数据进行变更操作,在变更操作后,再加载到缓存中,这样即使数据存在变更,缓存中的数据也与数据库中的数据保持一致。
附图说明
43.图1为一个实施例中数据同步方法的应用环境图;
44.图2为一个实施例中数据同步方法的流程示意图;
45.图3为一个实施例中的数据增删改请求的处理流程的示意图;
46.图4为一个实施例中数据查询步骤的流程示意图;
47.图5为一个实施例中的某一数据表在数据库中的示意图;
48.图6为一个实施例中的某一数据表在缓存中的示意图;
49.图7为一个实施例中数据同步装置的结构框图;
50.图8为一个实施例中计算机设备的内部结构图。
具体实施方式
51.为了使本技术的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本技术进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本技术,并不用于限定本技术。
52.本技术实施例提供的数据同步方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据库106可以存储服务器104需要处理的数据。数据库106可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,服务器104接收数据变更请求,根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表;根据数据变更请求对数据库中的数据进行变更操作;将变更操作后的数据库中的数据加载至缓存中,并对对应的数据表进行解锁。这样在接收数据变更请求时,先将缓存中的对应数据删除,并锁定该数据表,此外还对数据库中的数据进行变更操作,在变更操作后,再加载到缓存中,这样即使数据存在变更,缓存中的数据也与数据库中的数据保持一致。
53.其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备,物联网设备可为智能音箱、智能电视、智能空调、智能车载设备等。便携式可穿戴设备可为智能手表、智能手环、头戴设备等。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
54.在一个实施例中,如图2所示,提供了一种数据同步方法,以该方法应用于图1中的服务器为例进行说明,包括以下步骤:
55.s202:接收数据变更请求。
56.具体地,数据变更请求包括数据新增、修改和删除中的至少一个,其中终端发送数据变更请求至服务器,从而服务器将数据变更请求发送至数据库中,以对数据库中的数据进行处理。
57.s204:根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表。
58.具体地,缓存是与数据库对应的,其中缓存有与数据库对应的数据。在其中一个实施例中,缓存可以是通过键值对的方式存储数据库中的数据。优选地,缓存可以包括加载缓存或查询缓存中的至少一个。其中加载缓存是指以表为单位,用表名+主键值或表名+索引值作为缓存中存储的key值,并将数据库中对应的数据作为value值缓存。查询缓存是指以切面拦截到的数据访问层下的查询方法为基础,用查询方法名+查询请求参数作为缓存中存储的key值,并将应用近期查询请求得到的相应数据或空值作为value值缓存,其中查询缓存主要是为了应对不使用主键或索引查询的请求,并且可以缓存查询结果为空的请求以避免缓存穿透情况的发生。
59.其中,锁定是指禁止对该表中的数据的操作,包括查询等等,以使得对应的操作请求直接路由至数据库中,以根据数据库中的数据进行处理。
60.具体地,结合图3所示,其中图3为一个实施例中的数据增删改请求的处理流程的示意图,在该实施例中,对于数据新增、修改、删除操作,先删除缓存中涉及到的索引和主键的相关表数据,并在缓存中锁定该表,暂时将与该表相关的查询请求绕过缓存,避免数据更新过程中的其他查询请求使缓存加载数据库中的旧数据,之后再执行数据库的增删改操作。从而收到某张表的增删改请求之后,若再收到该表的查询请求则将请求直接交由数据库处理,由数据库返回数据,直到数据库完成增删改并将新的数据重新存储到缓存中,以保证不会从缓存读到脏数据。
61.s206:根据数据变更请求对数据库中的数据进行变更操作。
62.具体地,服务器根据数据变更请求对数据库中的数据进行变更操作,其中包括对数据的增删改操作,以对数据库中的原始数据进行处理。
63.s208:将变更操作后的数据库中的数据加载至缓存中,并对对应的数据表进行解锁。
64.具体地,在数据库中的数据处理完成后,则将处理完成的数据再加载至缓存中,在其中一个优选的实施例中,将数据库中变更后的数据增量加载至上述的加载缓存中,并在加载完成后,对对应的数据表进行解锁,以使得可以从缓存中获取到对应的数据。
65.上述数据同步方法,在接收数据变更请求时,先将缓存中的对应数据删除,并锁定该数据表,此外还对数据库中的数据进行变更操作,在变更操作后,再加载到缓存中,这样即使数据存在变更,缓存中的数据也与数据库中的数据保持一致。
66.在其中一个实施例中,上述数据同步方法还包括:定时将数据库中的数据加载至缓存中。
67.其中,定时加载是指周期性地将数据库中的数据加载至缓存中,优选地,在加载之前,先将数据库中的数据与缓存中的数据进行比对,包括与加载缓存和/或查询缓存中的数据,以确定缓存中与数据库中不相同的数据,并将不相同的数据加载至缓存中。
68.在一个更优选的实施例中,在进行数据比对时,仅将本周期内发生变化的数据库
中的数据与缓存中的对应数据进行比对,以减少比对量,提高加载效率。
69.在其中一个实施例中,定时将数据库中的数据加载至缓存中之前,还包括:对待加载的数据配置对应的定时加载任务;定时将数据库中的数据加载至缓存中,包括:根据定时加载任务获取待加载的数据;将待加载的数据加载至缓存中。
70.具体地,本实施例中对于定时加载任务可以是基于表达式匹配的缓存与数据库定时同步机制。通过预先配置相应的表达式,可以对某些特定的表进行简易的设置定制化加载任务,当触发时即可自动将数据库中的数据初始化至缓存中。对于一些固定时间更新的参数表,就可以配置相应的表达式,如配置常见的cron表达式“0 0 1**?”,即表示在每日凌晨1点,在数据库表更新后,自动将新的数据更新至加载缓存中,完成缓存与数据库之间的同步。
71.在其中一个实施例中,接收数据变更请求,包括:接收分布式事务处理请求;根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表,包括:判断分布式事务处理请求是否为所述数据变更请求;当分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表;将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁,包括:当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将数据库中的数据加载至缓存中,并对对应的数据表解锁。
72.具体地,对于涉及多表多节点的分布式事务场景,设计了基于事务的缓存与数据库的同步机制,以保证分布式事务提交或回滚后缓存与数据库的最终一致性。当全局事务开启时,首先判断分布式事务处理请求是否为数据变更请求,即是否会对数据产生变更,包括更新、删除、插入等数据库变更请求。例如查询请求则不会对数据产生变更,则无需进行后续操作,若数据产生变更,则缓存会获取该全局事务id,用该全局事务id作为key值,在缓存中记录下该全局事务下所有分支事务进行更新操作涉及的表名和更新条件,并使所涉及表的缓存暂时失效。待全局事务提交或回滚时,根据缓存中存储的数据更新信息,将数据重新加载至缓存并使表缓存重新生效,即当分布式事务处理请求完成进行分布式事务提交后,或分布式事务处理请求异常进行分布式事务回滚后,将数据库中的数据加载至缓存中,并对对应的数据表解锁。同时开启定时加载线程作为辅助保障,用于将数据库当前数据加载到缓存,以确保事务因超时等原因未提交(或未回滚)时缓存与数据库的最终一致性。
73.上述实施例中,可以在多种场景下完成缓存与数据库的数据同步。基于加载缓存和查询缓存的设计,缓存可以在初始化时或是在基于表达式的定时同步任务触发时,主动将数据库中的数据同步至缓存;在处理数据的增删改查请求时也可以动态的将数据库中的数据更新至缓存中,同时缓存锁的机制也避免了应用系统读取到脏数据情况的发生。此外对于涉及多表多节点的分布式事务场景下,利用基于事务的缓存与数据库同步机制也能较好的保证缓存与数据库的最终一致性。由此,本实施例中所提出的数据同步方法能够无感地完成数据库与缓存的数据同步,具有更高的数据一致性,以避免出现缓存与数据库数据不一致的现象。
74.在其中一个实施例中,上述数据同步方法还包括:接收数据处理请求;判断数据处理请求对应的数据表是否被锁定;当数据处理请求对应的数据表未被锁定时,根据数据处理请求查询缓存中数据;当数据表被锁定时,跳过查询缓存,查询数据库得到目标数据,返
回目标数据。
75.具体地,在接收到数据处理请求时,服务器先查询缓存中对应的数据表以判断该数据表是否被锁定,若是被锁定,则查询数据库中的数据以得到目标数据,并进行数据处理,若是未被锁定,则直接对缓存中的数据进行处理。
76.在其中一个实施例中,当数据处理请求对应的数据表未被锁定时,根据数据处理请求查询缓存中的数据,包括:查询加载缓存中是否存在对应的目标数据;加载缓存中存储有定时从数据库中加载的数据;当加载缓存中存在对应的目标数据时,返回目标数据;当加载缓存中不存在对应的目标数据时,继续查询查询缓存中是否存在对应的目标数据;查询缓存中缓存有最近的数据处理请求对应的目标数据;当查询缓存中存在对应的目标数据时,返回目标数据。
77.具体地,结合图4所示,在缓存中建立加载缓存和查询缓存,其中加载缓存主要用于在缓存系统初始化时或者定时同步任务触发时,主动将数据库中的表数据(表数据是指关系型数据库中以表的形式存储的数据)用基于主键和索引的组织方式批量同步至缓存中。具体来说加载缓存以表为单位,用表名+主键值或表名+索引值作为缓存中存储的key值,并将数据库中对应的数据作为value值缓存。而查询缓存则可以缓存最近所有查询请求得到的数据,从而在处理查询请求的过程中进一步同步数据库的数据至缓存中。同时查询缓存也可以应对不使用主键或索引查询的请求,并且可以缓存查询结果为空的请求以避免缓存穿透情况的发生。具体来说查询缓存以指springaop切面技术的切面拦截到的数据访问层下的查询方法为基础,用查询方法名+查询请求参数作为缓存中存储的key值,并将应用近期查询请求得到的相应数据或空值作为value值缓存。如图4,当数据查询请求被缓存拦截,会依次查询查询缓存和加载缓存,如均未命中再请求数据库,如数据库返回数据,则将数据写入查询缓存中,如数据库返回为空,则写入空值至查询缓存中。以上在缓存内加载缓存和查询缓存的设计实现了在初始化和处理查询请求等场景下将数据库中原本的关系型数据转换为键值对数据并同步至缓存中。
78.其中需要说明的是,本实施例中的数据库是指关系型数据库如mysql、oracle等,缓存是指基于key-value键值对形式的存储系统如redis、memcached等。因此,关系型数据库中的一张张表需要转换成键值对的形式,才能存储到缓存中。
79.具体地,结合图5所示的example_a表,其中id为主键,age为索引,那么在缓存启动时就会分别按主键和索引缓存数据到加载缓存中,如图6所示。
80.其中,本实施例中,结合多种同步机制,以在多种场景下保持缓存与数据库之间的数据一致性。首先在缓存中设计了加载缓存和查询缓存用于以键值对的形式存储数据库中的关系型数据,加载缓存以表为单位进行数据同步而查询缓存则可以在处理外部查询请求的过程中动态无感的同步数据库中的数据至缓存中。其次,对于增删改请求设计了一种锁机制用于在同步数据库数据的同时避免应用从缓存中读取到脏数据,保证了较高的数据一致性。第三,针对涉及多表多节点的分布式事务场景,设计了一种基于事务的缓存与数据库的数据同步机制,用于保障缓存和数据库的数据最终一致性。最后,设计了基于定时任务的缓存与数据库的数据同步机制,用于定时触发同步任务将数据库中的数据同步至加载缓存中。这样能够无感地完成数据库与缓存的数据同步,具有更高的数据一致性,以避免出现缓存与数据库数据不一致的现象。
81.应该理解的是,虽然如上的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
82.基于同样的发明构思,本技术实施例还提供了一种用于实现上述所涉及的数据同步方法的数据同步装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据同步装置实施例中的具体限定可以参见上文中对于数据同步方法的限定,在此不再赘述。
83.在一个实施例中,如图7所示,提供了一种数据同步装置,包括:第一接收模块701、锁定模块702、变更模块703和解锁模块704,其中:
84.第一接收模块701,用于接收数据变更请求;
85.锁定模块702,用于根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表;
86.变更模块703,用于根据数据变更请求对数据库中的数据进行变更操作;
87.解锁模块704,用于将变更操作后的数据库中的数据加载至缓存中,并对对应的数据表进行解锁。
88.在其中一个实施例中,上述数据同步装置还包括:
89.定时加载模块,用于定时将数据库中的数据加载至缓存中。
90.在其中一个实施例中,上述数据同步装置还包括:
91.配置模块,用于对待加载的数据配置对应的定时加载任务;
92.上述定时加载模块可以包括:
93.数据获取单元,用于根据定时加载任务获取待加载的数据;
94.加载单元,用于将待加载的数据加载至缓存中。
95.在其中一个实施例中,上述第一接收模块701用于接收分布式事务处理请求;
96.上述锁定模块702用于判断所述分布式事务处理请求是否为数据变更请求;当所述分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表;
97.上述解锁模块704用于当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将所述数据库中的数据加载至缓存中,并对对应的所述数据表解锁。
98.在其中一个实施例中,上述数据同步装置还包括:
99.第二接收模块,用于接收数据处理请求;
100.判断模块,用于判断所述数据处理请求对应的数据表是否被锁定;
101.数据处理模块,用于当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中数据;当所述数据表被锁定时,跳过查询缓存,查询所述数据库得到目标数据,返回所述目标数据。
102.在其中一个实施例中,上述数据处理模块包括:
103.第一查询单元,用于查询加载缓存中是否存在对应的目标数据;所述加载缓存中存储有定时从所述数据库中加载的数据;
104.判断单元,用于当所述加载缓存中存在对应的目标数据时,返回所述目标数据;
105.第二查询单元,用于当所述加载缓存中不存在对应的目标数据时,继续查询查询缓存中是否存在对应的目标数据;所述查询缓存中缓存有最近的所述数据处理请求对应的目标数据;当所述查询缓存中存在对应的目标数据时,返回所述目标数据。
106.上述数据同步装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
107.在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图8所示。该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据同步方法。
108.本领域技术人员可以理解,图8中示出的结构,仅仅是与本技术方案相关的部分结构的框图,并不构成对本技术方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
109.在一个实施例中,提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现以下步骤:接收数据变更请求;根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表;根据数据变更请求对数据库中的数据进行变更操作;将变更操作后的数据库中的数据加载至缓存中,并对对应的数据表进行解锁。
110.在一个实施例中,处理器执行计算机程序时还实现以下步骤:定时将数据库中的数据加载至缓存中。
111.在一个实施例中,处理器执行计算机程序时所实现的定时将数据库中的数据加载至缓存中之前,还包括:对待加载的数据配置对应的定时加载任务;处理器执行计算机程序时所实现的定时将数据库中的数据加载至缓存中,包括:根据定时加载任务获取待加载的数据;将待加载的数据加载至缓存中。
112.在一个实施例中,处理器执行计算机程序时所实现的接收数据变更请求,包括:接收分布式事务处理请求;处理器执行计算机程序时所实现的根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表,包括:判断所述分布式事务处理请求是否为数据变更请求;当所述分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表。处理器执行计算机程序时所实现的将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁,包括:当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将所述数据库中的数据加载至缓存中,并对对应的所述数据表解锁。
113.在一个实施例中,处理器执行计算机程序时还实现以下步骤:接收数据处理请求;判断所述数据处理请求对应的数据表是否被锁定;当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中数据;当所述数据表被锁定时,跳过查询缓存,查询所述数据库得到目标数据,返回所述目标数据。
114.在一个实施例中,处理器执行计算机程序时所实现的当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中的数据,包括:查询加载缓存中是否存在对应的目标数据;所述加载缓存中存储有定时从所述数据库中加载的数据;当所述加载缓存中存在对应的目标数据时,返回所述目标数据;当所述加载缓存中不存在对应的目标数据时,继续查询查询缓存中是否存在对应的目标数据;所述查询缓存中缓存有最近的所述数据处理请求对应的目标数据;当所述查询缓存中存在对应的目标数据时,返回所述目标数据。
115.在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现以下步骤:接收数据变更请求;根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表;根据数据变更请求对数据库中的数据进行变更操作;将变更操作后的数据库中的数据加载至缓存中,并对对应的数据表进行解锁。
116.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:定时将数据库中的数据加载至缓存中。
117.在一个实施例中,计算机程序被处理器执行时所实现的定时将数据库中的数据加载至缓存中之前,还包括:对待加载的数据配置对应的定时加载任务;计算机程序被处理器执行时所实现的定时将数据库中的数据加载至缓存中,包括:根据定时加载任务获取待加载的数据;将待加载的数据加载至缓存中。
118.在一个实施例中,计算机程序被处理器执行时所实现的接收数据变更请求,包括:接收分布式事务处理请求;计算机程序被处理器执行时所实现的根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表,包括:判断所述分布式事务处理请求是否为数据变更请求;当所述分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表。处理器执行计算机程序时所实现的将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁,包括:当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将所述数据库中的数据加载至缓存中,并对对应的所述数据表解锁。
119.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收数据处理请求;判断所述数据处理请求对应的数据表是否被锁定;当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中数据;当所述数据表被锁定时,跳过查询缓存,查询所述数据库得到目标数据,返回所述目标数据。
120.在一个实施例中,计算机程序被处理器执行时所实现的当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中的数据,包括:查询加载缓存中是否存在对应的目标数据;所述加载缓存中存储有定时从所述数据库中加载的数据;当所述加载缓存中存在对应的目标数据时,返回所述目标数据;当所述加载缓存中不存在对应的目标数据时,继续查询查询缓存中是否存在对应的目标数据;所述查询缓存中缓存有最近的所述数据处理请求对应的目标数据;当所述查询缓存中存在对应的目标数据时,返
回所述目标数据。
121.在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现以下步骤:接收数据变更请求;根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表;根据数据变更请求对数据库中的数据进行变更操作;将变更操作后的数据库中的数据加载至缓存中,并对对应的数据表进行解锁。
122.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:定时将数据库中的数据加载至缓存中。
123.在一个实施例中,计算机程序被处理器执行时所实现的定时将数据库中的数据加载至缓存中之前,还包括:对待加载的数据配置对应的定时加载任务;计算机程序被处理器执行时所实现的定时将数据库中的数据加载至缓存中,包括:根据定时加载任务获取待加载的数据;将待加载的数据加载至缓存中。
124.在一个实施例中,计算机程序被处理器执行时所实现的接收数据变更请求,包括:接收分布式事务处理请求;计算机程序被处理器执行时所实现的根据数据变更请求删除缓存中对应的数据,并锁定对应的数据表,包括:判断所述分布式事务处理请求是否为数据变更请求;当所述分布式事务处理请求为所述数据变更请求时,锁定所述分布式事务处理请求对应的数据表。处理器执行计算机程序时所实现的将变更操作后的数据库中的数据加载至缓存中,并对对应的所述数据表进行解锁,包括:当所述分布式事务处理请求完成进行分布式事务提交后,或所述分布式事务处理请求异常进行分布式事务回滚后,将所述数据库中的数据加载至缓存中,并对对应的所述数据表解锁。
125.在一个实施例中,计算机程序被处理器执行时还实现以下步骤:接收数据处理请求;判断所述数据处理请求对应的数据表是否被锁定;当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中数据;当所述数据表被锁定时,跳过查询缓存,查询所述数据库得到目标数据,返回所述目标数据。
126.在一个实施例中,计算机程序被处理器执行时所实现的当所述数据处理请求对应的所述数据表未被锁定时,根据所述数据处理请求查询缓存中的数据,包括:查询加载缓存中是否存在对应的目标数据;所述加载缓存中存储有定时从所述数据库中加载的数据;当所述加载缓存中存在对应的目标数据时,返回所述目标数据;当所述加载缓存中不存在对应的目标数据时,继续查询查询缓存中是否存在对应的目标数据;所述查询缓存中缓存有最近的所述数据处理请求对应的目标数据;当所述查询缓存中存在对应的目标数据时,返回所述目标数据。
127.本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本技术所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(read-only memory,rom)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(reram)、磁变存储器(magnetoresistive random access memory,mram)、铁电存储器(ferroelectric random access memory,fram)、相变存储器(phase change memory,pcm)、石墨烯存储器等。易失性存储器可包括随机存取存储器(random access memory,
ram)或外部高速缓冲存储器等。作为说明而非局限,ram可以是多种形式,比如静态随机存取存储器(static random access memory,sram)或动态随机存取存储器(dynamic random access memory,dram)等。本技术所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本技术所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
128.以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
129.以上所述实施例仅表达了本技术的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本技术专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本技术构思的前提下,还可以做出若干变形和改进,这些都属于本技术的保护范围。因此,本技术的保护范围应以所附权利要求为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1