CN111177197B - 一种缓存处理方法及系统 - Google Patents
一种缓存处理方法及系统 Download PDFInfo
- Publication number
- CN111177197B CN111177197B CN201911369179.7A CN201911369179A CN111177197B CN 111177197 B CN111177197 B CN 111177197B CN 201911369179 A CN201911369179 A CN 201911369179A CN 111177197 B CN111177197 B CN 111177197B
- Authority
- CN
- China
- Prior art keywords
- lease
- cache
- target
- target lease
- entity
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 26
- 238000012545 processing Methods 0.000 claims abstract description 14
- 238000004590 computer program Methods 0.000 claims description 9
- 238000000034 method Methods 0.000 abstract description 18
- 230000008569 process Effects 0.000 abstract description 4
- 230000007547 defect Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 6
- 230000004048 modification Effects 0.000 description 6
- 238000012986 modification Methods 0.000 description 6
- 230000007704 transition Effects 0.000 description 6
- 238000004140 cleaning Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 4
- 230000007246 mechanism Effects 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 2
- 230000005540 biological transmission Effects 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000006870 function Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 230000004044 response Effects 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computational Linguistics (AREA)
- Computer Security & Cryptography (AREA)
- Information Transfer Between Computers (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例提供一种缓存处理方法及系统,该方法包括:根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。本发明实施例提供的一种缓存处理方法及系统,通过在缓存处理过程中匹配第一目标租约和第二目标租约,如果二者不一致,说明在缓存缺失到读取数据再设置到缓存期间,目标数据发生了修改,因此不设置缓存,这样就避免了缓存和数据库不一致的缺陷。
Description
技术领域
本发明涉及计算机技术领域,尤其涉及一种缓存处理方法及系统。
背景技术
在软件服务中,通常使用数据库作为核心存储。但是数据库的读取速度较慢,为了提高用户查询的速度,往往都会结合缓存使用。引入了缓存后,就可能出现缓存中的数据和数据库中的数据不一致的情况。
根据缓存使用场景的不同,缓存不一致会导致或轻或重的后果,必须加以控制或解决。
发明内容
为了解决上述问题,本发明实施例提供一种缓存处理方法及系统。
第一方面,本发明实施例提供一种缓存处理方法,包括:
根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
优选地,还包括:
若所述第一目标租约与所述第二目标租约一致,接收所述目标数据,并将所述目标数据设置缓存,并清除所述第一目标租约,所述目标数据由所述客户端从数据库中获得。
优选地,还包括:
将所述第一目标租约的类型设置为缓存缺失型,若设置缓存的时间超过第一预设时间,则忽略所有设置缓存操作。
优选地,还包括:
若接收到清除指令,则清除缓存,并将所述第一目标租约的类型设置为缓存失效型,若所述第一目标租约的类型为缓存失效型,则忽略所有设置缓存操作。
优选地,还包括:
在对所述数据库进行更新之前,进行缓存失效操作;
并且在第二预设时间内,忽略所有设置缓存操作。
优选地,所述第一目标租约包括实体租约和对象租约,所述实体租约对应实体,所述对象租约对应对象,具体地:
在将实体设置到缓存情况下,若所述实体租约的类型为缓存失效型,将所述实体下的每一对象均设置到缓存中;
在处理缓存情况下,若所述实体租约存在,则判断所述第一目标租约存在;若所述实体租约不存在,且所述对象租约存在,则判断所述第一目标租约存在;若所述实体租约和所述对象租约均不存在,则判断所述第一目标租约不存在。
第二方面,本发明实施例提供一种缓存处理方法,包括:
发送目标数据请求指令,以使得服务器若判断获知目标数据未命中,生成第一目标租约,并发送所述第一目标租约;
根据所述第一目标租约,生成第二目标租约;
将所述第二目标租约发送给所述服务器,所述服务器若判断获知所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,忽略缓存设置请求。
第三方面,本发明实施例提供一种缓存处理系统,包括:
请求模块,用于根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
发送模块,用于将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
判断模块,用于接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
第四方面,本发明实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现本发明第一方面提供的一种缓存处理方法的步骤。
第五方面,本发明实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本发明第一方面提供的一种缓存处理方法的步骤。
本发明实施例提供的一种缓存处理方法及系统,通过在缓存处理过程中匹配第一目标租约和第二目标租约,如果二者不一致,说明在缓存缺失到读取数据再设置到缓存期间,目标数据发生了修改,因此不设置缓存,这样就避免了缓存和数据库不一致的缺陷。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的缓存处理方法的流程图;
图2为服务器在各种租约状态下对各类型客户端请求的处理流程和状态转换示意图;
图3为本发明又一实施例提供的一种缓存处理方法的流程图;
图4为本发明实施例提供的一种缓存处理系统的结构示意图;
图5为本发明实施例提供的一种电子设备的实体结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例中所提到的缓存,是为了提高数据访问速度和减少数据库访问压力而提供的快速数据存储,由独立部署的缓存服务器提供,比如redis或者memcached。实体,指一个业务对象,对应软件系统中的一个类,比如客户实体,就对应系统中的一个类Account,通常对应数据库中的一个表。对象,指实体的一个具体实例。由实体和一个对象ID来唯一标识,通常对应数据库中的一行。
缓存数据主要是针对实体的。通常其结构为一个hash。键为实体的名称,比如Account代表客户实体,另外为了支持多租户,还要再加上一个租户ID,成员的键为某一个具体实体的ID,比如2222;成员的值为序列化的实体对象。
现有技术中对缓存进行读取和设置的步骤如下:
采用按需填充的旁路读取方案,需要数据时,从缓存中读取数据。如果命中了则使用该数据;否则,从数据库中读取数据并设置回缓存。
采用该方案是为了减少缓存数量。只在用到数据的时候才访问和设置缓存。而不是在数据更新的时候,将更新后的数据设置到缓存中。
现有技术中对缓存进行清除的步骤如下:
在数据库有更新操作时不采用通写方案来更新缓存,而是清除缓存。另外采用双清机制,在数据库进行更新或者删除操作前,清除对应缓存;在数据库进行更新或者删除操作后,再次清除对应缓存。
在数据库操作前清除缓存,是为了防止在数据库更新后,清除缓存的操作失败而导致缓存中数据长时间为过期数据。
在数据库操作后清除缓存,是为了防止其他请求读取到了数据库更新前的数据并设置到缓存中而导致无法读自己的写。
下面通过举例说明缓存不一致的场景:
1、客户端a:a1缓存不命中→a2从数据库取数据→a3将数据设置回缓存。
2、客户端b:b1清除缓存→b2修改数据库→b3清除缓存→b4读刚才修改的数据。
在以上场景中,b4读到的数据实际是a2从数据库中读取到的,而此时b2修改数据库还未完成。
也就是说,这里b4读取不到自己修改的数据;同时,缓存中也会长时间放置过期的数据。另外,如果b3失败,那么即使a3在b3之前设置,也会导致缓存中长时间放置过期的数据。
针对该问题,本发明实施例设计了一种租约机制,租约是设置在缓存服务器中的一个标记,和缓存中的实体或对象一一对应。用来实现防止缓存不一致功能。
具体地,图1为本发明实施例提供的缓存处理方法的流程图,如图1所示,本发明实施例提供一种缓存处理方法,包括:
S1,根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
S2,将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
S3,接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
本发明实施例中的执行主体为服务器,首先客户端需要目标数据时,向服务器发送目标数据请求指令,服务器接收到目标数据请求指令后,如果命中了该目标数据,则直接从缓存中获取该目标数据。
如果缓存未命中,服务器则生成第一目标租约,并将该第一目标租约返回给客户端。客户端接收到第一目标租约后,生成第二目标租约,并将第二目标租约发送给服务器。
服务器接收到第二目标租约,第一目标租约为服务器的当前租约,并将第一目标租约和第二目标租约进行比较,如果第一目标租约不存在或者第一目标租约与第二目标租约不一致,则说明在缓存缺失到数据读取、再到设置缓存期间,缓存发生了修改,这个修改实际发生的时间比获取缓存早还是晚并不重要,重要的是,发生了并发修改,这样就不能设置缓存,忽略缓存设置操作永远是安全的。因此,本发明实施例通过不设置缓存来保证缓存和数据库的一致性。
本发明实施例提供的一种缓存处理方法,通过在缓存处理过程中匹配第一目标租约和第二目标租约,如果二者不一致,说明在缓存缺失到读取数据再设置到缓存期间,目标数据发生了修改,因此不设置缓存,这样就避免了缓存和数据库不一致的缺陷。
在上述实施例的基础上,优选地,还包括:
若所述第一目标租约与所述第二目标租约一致,接收所述目标数据,并将所述目标数据设置缓存,并清除所述第一目标租约,所述目标数据由所述客户端从数据库中获得。
具体地,如果第一目标租约和第二目标租约一致,客户端从数据库中获取目标数据后,将目标数据发送给服务器,服务器接收到该目标数据,并且将该目标数据设置缓存,并清除第一目标租约。
如果第一目标租约和第二目标租约一致,说明数据未发生修改,可以直接将目标数据设置在缓存中。
在上述实施例的基础上,优选地,还包括:
将所述第一目标租约的类型设置为缓存缺失型,若设置缓存的时间超过第一预设时间,则忽略所有设置缓存操作。
具体地,本发明实施例中的第一目标租约和第二目标租约均使用于本发明实施例提出的租约结构,
租约为一个结构体,其成员为:一个单调时间戳,一个计数和一个租约类型。
时间戳用来做租约过期。为了防止时钟回拨,这里使用单调时间戳。给租约设置过期时间,主要是为了防止租约太多,占用过多内存,所以需要有一个回收过期租约的机制。
计数为一个单调递增整数计数器,用来判断租约是否匹配。
租约类型分为缓存缺失型和缓存失效型,如果租约类型为缓存缺失型,说明此时缓存未命中,需要从数据库中读取数据并设置缓存,如果租约类型为缓存失效型,说明应该清除缓存。
具体地,服务器生成第一目标租约时,第一目标租约的类型被设置为缓存缺失型,此时第一目标租约的时间戳即为第一预设时间,第一预设时间可以根据实际情况进行确定,本发明实施例中,第一预设时间的取值为1000s,即如果从缓存缺失到设置缓存的时间超过了1000s,那么将无法设置缓存,因为租约过期之后,就没有办法知道期间发生了什么操作,从而无法保证缓存与数据库的一致性。
正常情况下,缓存缺失后都会从数据库取数据再来设置缓存,到时会删除该租约。设置过期时间只是为了防止偶发的缓存缺失后,再没有回来设置缓存的情况。而如果第一预设时间设置的太短,可能会导致设置不了缓存。
为了防止第一次获得租约的客户端意外崩溃,即使已经有客户端获得了租约,其它客户端也会获得同样的租约,并继续访问数据库。第一个携带匹配租约的设置缓存操作会成功,并删除租约。
在上述实施例的基础上,优选地,还包括:
若接收到清除指令,则清除缓存,并将所述第一目标租约的类型设置为缓存失效型,若所述第一目标租约的类型为缓存失效型,则忽略所有设置缓存操作。
如果客户端进行清除操作,则客户端向服务端发送清除指令,服务端接收到该清除指令后,直接将第一目标租约的类型设置为缓存失效型,第一目标租约设置为缓存失效型后,无法对缓存进行任何设置操作,使得该缓存数据对应的租约失效。
在上述实施例的基础上,优选地,还包括:
在对所述数据库进行更新之前,进行缓存失效操作;
并且在第二预设时间内,忽略所有设置缓存操作。
当第一目标租约为缓存失效型时,在对数据库更新之前,对缓存进行失效操作,并且在第二预设时间内,忽略所有设置缓存的操作,第二预设时间可以根据实际需要进行设定,本发明实施例中,第二预设时间设置为10s。
另外,如果客户端在读取数据时,存在该租约,那么会返回一个该类型租约给服务端,这样客户端就不会将从数据库读取到的数据设置回缓存。
放在数据库更新前是为了防止数据库更新成功,但是缓存清理失败而导致缓存长时间不一致。
数据库更新后,如果有数据库事务则是在事务完成后,会再次进行一次缓存失效操作。这时候会将之前设置的缓存提前失效租约删除。
该操作主要是为了:1、减少租约的过期时间对性能的影响,因为在过期时间内不能设置缓存;2、确保永远可以读自己的写。
在上述实施例的基础上,优选地,所述第一目标租约包括实体租约和对象租约,所述实体租约对应实体,所述对象租约对应对象,具体地:
在将实体设置到缓存情况下,若所述实体租约的类型为缓存失效型,将所述实体下的每一对象均设置到缓存中;
在处理缓存情况下,若所述实体租约存在,则判断所述第一目标租约存在;若所述实体租约不存在,且所述对象租约存在,则判断所述第一目标租约存在;若所述实体租约和所述对象租约均不存在,则判断所述第一目标租约不存在。
与缓存数据的结构相对应的,本发明实施例中租约分为两级。一级租约对应某个租户的某个实体,即为实体租约,二级租约对应实体下的一个具体对象,即为对象租约。
一级租约是为了处理实体大批量更新的情况,为了减少调用次数,可能会清除整个实体的缓存,而不是挨个清除具体缓存。一级租约只可能是缓存失效型的,当租约存在的时候,该实体下的所有对象都不能设置到缓存中。
二级租约可能是缓存失效型和缓存缺失型,只控制某一个具体的对象。
在处理缓存的时候,先判断一级租约。如果一级租约存在,说明第一目标租约存在,就不需要再判断二级租约了;如果一级租约不存在,再判断二级租约。
而在需要生成或者删除一级租约的时候,会同时处理其下的所有二级租约。因为如果只是处理一级租约,假设在一级租约生成之前已经生成了缓存缺失型的二级租约,那么在一级租约被删除后,带有之前二级租约的设置缓存请求可能被允许,从而导致缓存不一致。所以生成或者删除一级租约的时候,必须同时处理其下的所有二级租约。
为了防止租约占用过多内存,本发明实施例对其租约使用了过期机制,并采用两种方式来对其进行清理:
1、被动清理,在访问的时候判断是否已过期,如果租约已过期,清除该租约。
2、主动清理,在租约的数量超过了100万的时候,每次新增一个租约,循环检查20个租约进行回收。
如果租约数量少于限制的一半,或者一次循环完成了,则停止回收。每次只回收少量租约,是为了防止回收操作占用太长时间,影响响应速度。大多数情况下,被动清理会起作用。
图2为服务器在各种租约状态下对各类型客户端请求的处理流程和状态转换示意图,如图2所示,lease表示租约,各操作说明如下:
get表示获取缓存操作,set表示设置缓存操作,predel表示缓存双清中的第一次清理缓存操作,del表示缓存双清中的第二次清理缓存操作。
其中圆角矩形代表的是租约的状态。从图中可以看到,共有3种状态:没有任何租约、存在缓存缺失租约和存在缓存失效租约。
箭头代表的是状态的转换,箭头的说明文字说明的是导致状态转换的操作,该操作是由客户端发起的。例如在没有任何租约的状态下,客户端发出一个获取数据(get)请求,并且该请求发生了缓存未命中,则状态会转换成存储缓存缺失租约状态。
初始状态为黑色实心圆圈指向的,表示目前没有任何租约。在这之后,状态转换就由客户端的各种请求来驱动。
图3为本发明又一实施例提供的一种缓存处理方法的流程图,如图3所示,该方法包括:
S1,发送目标数据请求指令,以使得服务器若判断获知目标数据未命中,生成第一目标租约,并发送所述第一目标租约;
S2,根据所述第一目标租约,生成第二目标租约;
S3,将所述第二目标租约发送给所述服务器,所述服务器若判断获知所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,忽略缓存设置请求。
本发明实施例的执行主体是客户端,首先客户端需要目标数据时,向服务器发送目标数据请求指令,服务器接收到目标数据请求指令后,如果命中了该目标数据,则客户端直接从缓存中获取该目标数据。
如果缓存未命中,服务器则生成第一目标租约,并将该第一目标租约返回给客户端。客户端接收到第一目标租约后,生成第二目标租约,并将第二目标租约发送给服务器。
服务器接收到第二目标租约,第一目标租约为服务器的当前租约,并将第一目标租约和第二目标租约进行比较,如果第一目标租约不存在或者第一目标租约与第二目标租约不一致,则忽略该缓存设置请求。
此情况说明在缓存缺失到数据读取、再到设置缓存期间,缓存发生了修改,这个修改实际发生的时间比获取缓存早还是晚并不重要,重要的是,发生了并发修改,这样就不能设置缓存,忽略缓存设置操作永远是安全的。因此,本发明实施例通过不设置缓存来保证缓存和数据库的一致性。
该方法还包括:如果第一目标租约存在且第一目标租约与第二目标租约一致,则说明缓存未发生修改,客户端直接从数据库中获取目标数据,并将目标数据和第二目标租约发送给服务器。
图4为本发明实施例提供的一种缓存处理系统的结构示意图,如图4所示,该系统包括:请求模块401、发送模块402和判断模块403。其中,
请求模块401用于根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
发送模块402用于将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
判断模块403用于接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
本发明实施例提供的系统实施例是为了实现上述各方法实施例的,具体流程和详细内容请参照上述方法实施例,此处不再赘述。
图5为本发明实施例提供的一种电子设备的实体结构示意图,如图5所示,该电子设备可以包括:处理器(processor)501、通信接口(Communications Interface)502、存储器(memory)503和总线504,其中,处理器501,通信接口502,存储器503通过总线504完成相互间的通信。通信接口502可以用于电子设备的信息传输。处理器501可以调用存储器503中的逻辑指令,以执行包括如下的方法:
根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
此外,上述的存储器503中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明上述各方法实施例的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明实施例还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各实施例提供的传输方法,例如包括:
根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
Claims (10)
1.一种缓存处理方法,其特征在于,包括:
根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
2.根据权利要求1所述的缓存处理方法,其特征在于,还包括:
若所述第一目标租约与所述第二目标租约一致,接收所述目标数据,并将所述目标数据设置缓存,并清除所述第一目标租约,所述目标数据由所述客户端从数据库中获得。
3.根据权利要求2所述的缓存处理方法,其特征在于,还包括:
将所述第一目标租约的类型设置为缓存缺失型,若设置缓存的时间超过第一预设时间,则忽略所有设置缓存操作。
4.根据权利要求1所述的缓存处理方法,其特征在于,还包括:
若接收到清除指令,则清除缓存,并将所述第一目标租约的类型设置为缓存失效型,若所述第一目标租约的类型为缓存失效型,则忽略所有设置缓存操作。
5.根据权利要求4所述的缓存处理方法,其特征在于,还包括:
在对数据库进行更新之前,进行缓存失效操作;
并且在第二预设时间内,忽略所有设置缓存操作。
6.根据权利要求1所述的缓存处理方法,其特征在于,所述第一目标租约包括实体租约和对象租约,所述实体租约对应实体,所述对象租约对应对象,具体地:
在将实体设置到缓存情况下,若所述实体租约的类型为缓存失效型,将所述实体下的每一对象均设置到缓存中;
在处理缓存情况下,若所述实体租约存在,则判断所述第一目标租约存在;若所述实体租约不存在,且所述对象租约存在,则判断所述第一目标租约存在;若所述实体租约和所述对象租约均不存在,则判断所述第一目标租约不存在。
7.一种缓存处理方法,其特征在于,包括:
发送目标数据请求指令,以使得服务器若判断获知目标数据未命中,生成第一目标租约,并发送所述第一目标租约;
根据所述第一目标租约,生成第二目标租约;
将所述第二目标租约发送给所述服务器,所述服务器若判断获知所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,忽略缓存设置请求。
8.一种缓存处理系统,其特征在于,包括:
请求模块,用于根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
发送模块,用于将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
判断模块,用于接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
9.一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1至7任一项所述缓存处理方法的步骤。
10.一种非暂态计算机可读存储介质,其上存储有计算机程序,其特征在于,该计算机程序被处理器执行时实现如权利要求1至7任一项所述缓存处理方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911369179.7A CN111177197B (zh) | 2019-12-26 | 2019-12-26 | 一种缓存处理方法及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911369179.7A CN111177197B (zh) | 2019-12-26 | 2019-12-26 | 一种缓存处理方法及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111177197A CN111177197A (zh) | 2020-05-19 |
CN111177197B true CN111177197B (zh) | 2023-03-14 |
Family
ID=70654029
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911369179.7A Active CN111177197B (zh) | 2019-12-26 | 2019-12-26 | 一种缓存处理方法及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111177197B (zh) |
Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521224A (zh) * | 2010-09-17 | 2012-06-27 | 微软公司 | 目录租赁 |
CN102546751A (zh) * | 2011-12-06 | 2012-07-04 | 华中科技大学 | 一种分布式文件系统分级元数据缓存控制方法 |
CN103701770A (zh) * | 2013-11-22 | 2014-04-02 | 汉柏科技有限公司 | 一种基于租约机制的异常解锁方法 |
CN103714183A (zh) * | 2014-01-10 | 2014-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种元数据租约期限的动态获取方法和系统 |
CN104331470A (zh) * | 2014-10-31 | 2015-02-04 | 深圳市东信时代信息技术有限公司 | 基于缓存机制的数据处理方法及系统 |
CN106453471A (zh) * | 2016-07-08 | 2017-02-22 | 合网络技术(北京)有限公司 | 一种基于分布式应用的租约数据的发送及获取方法、装置 |
CN107291869A (zh) * | 2014-04-14 | 2017-10-24 | 五八同城信息技术有限公司 | 一种分布式服务系统数据查询的方法 |
CN107360245A (zh) * | 2017-07-28 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种基于租约锁机制的本地缓存方法及装置 |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
Family Cites Families (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7650514B2 (en) * | 2005-12-30 | 2010-01-19 | Microsoft Corporation | Scalable leases |
US8185566B2 (en) * | 2009-01-15 | 2012-05-22 | Microsoft Corporation | Client-based caching of remote files |
US9940301B2 (en) * | 2014-10-31 | 2018-04-10 | International Business Machines Corporation | Cache management for RDMA data stores |
US10078588B2 (en) * | 2016-03-25 | 2018-09-18 | Advanced Micro Devices, Inc. | Using leases for entries in a translation lookaside buffer |
-
2019
- 2019-12-26 CN CN201911369179.7A patent/CN111177197B/zh active Active
Patent Citations (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102521224A (zh) * | 2010-09-17 | 2012-06-27 | 微软公司 | 目录租赁 |
CN102546751A (zh) * | 2011-12-06 | 2012-07-04 | 华中科技大学 | 一种分布式文件系统分级元数据缓存控制方法 |
CN103701770A (zh) * | 2013-11-22 | 2014-04-02 | 汉柏科技有限公司 | 一种基于租约机制的异常解锁方法 |
CN103714183A (zh) * | 2014-01-10 | 2014-04-09 | 浪潮(北京)电子信息产业有限公司 | 一种元数据租约期限的动态获取方法和系统 |
CN107291869A (zh) * | 2014-04-14 | 2017-10-24 | 五八同城信息技术有限公司 | 一种分布式服务系统数据查询的方法 |
CN104331470A (zh) * | 2014-10-31 | 2015-02-04 | 深圳市东信时代信息技术有限公司 | 基于缓存机制的数据处理方法及系统 |
CN106453471A (zh) * | 2016-07-08 | 2017-02-22 | 合网络技术(北京)有限公司 | 一种基于分布式应用的租约数据的发送及获取方法、装置 |
CN107360245A (zh) * | 2017-07-28 | 2017-11-17 | 郑州云海信息技术有限公司 | 一种基于租约锁机制的本地缓存方法及装置 |
CN110008224A (zh) * | 2019-03-08 | 2019-07-12 | 阿里巴巴集团控股有限公司 | 一种数据库事务处理方法及装置 |
Non-Patent Citations (2)
Title |
---|
A Cache Algorithm Using Leases for Node Data in the Internet of Things;Tracey D等;《2016 IEEE 4th International Conference on Future Internet of Things and Cloud》;20161231;全文 * |
面向映射系统的关键技术研究;宋海瑞;《中国优秀硕士学位论文全文数据库 信息科技辑》;20131115;全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN111177197A (zh) | 2020-05-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10877956B2 (en) | Transactional cache invalidation for inter-node caching | |
US10353895B2 (en) | Atomic visibility switch for transactional cache invalidation | |
CN110045912B (zh) | 数据处理方法和装置 | |
US9697253B2 (en) | Consistent client-side cache | |
EP3252617B1 (en) | Transaction processing method, processing node, central node and cluster | |
US8548945B2 (en) | Database caching utilizing asynchronous log-based replication | |
US6950823B2 (en) | Transparent edge-of-network data cache | |
US20080098041A1 (en) | Server supporting a consistent client-side cache | |
CN110134550B (zh) | 一种数据处理方法、装置以及计算机可读存储介质 | |
CN106354732B (zh) | 一种支持并发协同的离线数据版本冲突解决方法 | |
US9864684B2 (en) | Performing efficient cache invalidation | |
US9928174B1 (en) | Consistent caching | |
CN111200634A (zh) | 缓存资源联动更新方法、系统及服务器 | |
CN112256776B (zh) | 表单重复提交检测方法、装置、计算机设备和存储介质 | |
CN110191168A (zh) | 在线业务数据的处理方法、装置、计算机设备和存储介质 | |
CN111177197B (zh) | 一种缓存处理方法及系统 | |
CN115344610A (zh) | 两级缓存数据获取方法及装置 | |
US11269784B1 (en) | System and methods for efficient caching in a distributed environment | |
CN113779052A (zh) | 数据更新方法、装置、设备及存储介质 | |
EP2916231B1 (en) | Directory maintenance method and apparatus | |
CN113468190B (zh) | 一种对MongoDB数据库实例的配置更新方法及装置 | |
CN111737298B (zh) | 基于分布式存储的缓存数据管控方法及装置 | |
CN117828201A (zh) | 高性能的短链接生成方法 | |
CN117688261A (zh) | 前端缓存方法、装置及电子设备 | |
CN116244363A (zh) | 数据库的批量数据插入的处理方法、存储介质与设备 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |