本发明专利技术实施例提供一种缓存处理方法及系统,该方法包括:根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。本发明专利技术实施例提供的一种缓存处理方法及系统,通过在缓存处理过程中匹配第一目标租约和第二目标租约,如果二者不一致,说明在缓存缺失到读取数据再设置到缓存期间,目标数据发生了修改,因此不设置缓存,这样就避免了缓存和数据库不一致的缺陷。
A cache processing method and system
【技术实现步骤摘要】
一种缓存处理方法及系统
本专利技术涉及计算机
,尤其涉及一种缓存处理方法及系统。
技术介绍
在软件服务中,通常使用数据库作为核心存储。但是数据库的读取速度较慢,为了提高用户查询的速度,往往都会结合缓存使用。引入了缓存后,就可能出现缓存中的数据和数据库中的数据不一致的情况。根据缓存使用场景的不同,缓存不一致会导致或轻或重的后果,必须加以控制或解决。
技术实现思路
为了解决上述问题,本专利技术实施例提供一种缓存处理方法及系统。第一方面,本专利技术实施例提供一种缓存处理方法,包括:根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。优选地,还包括:若所述第一目标租约与所述第二目标租约一致,接收所述目标数据,并将所述目标数据设置缓存,并清除所述第一目标租约,所述目标数据由所述客户端从数据库中获得。优选地,还包括:将所述第一目标租约的类型设置为缓存缺失型,若设置缓存的时间超过第一预设时间,则忽略所有设置缓存操作。优选地,还包括:若接收到清除指令,则清除缓存,并将所述第一目标租约的类型设置为缓存失效型,若所述第一目标租约的类型为缓存失效型,则忽略所有设置缓存操作。优选地,还包括:在对所述数据库进行更新之前,进行缓存失效操作;并且在第二预设时间内,忽略所有设置缓存操作。优选地,所述第一目标租约包括实体租约和对象租约,所述实体租约对应实体,所述对象租约对应对象,具体地:在将实体设置到缓存情况下,若所述实体租约的类型为缓存失效型,将所述实体下的每一对象均设置到缓存中;在处理缓存情况下,若所述实体租约存在,则判断所述第一目标租约存在;若所述实体租约不存在,且所述对象租约存在,则判断所述第一目标租约存在;若所述实体租约和所述对象租约均不存在,则判断所述第一目标租约不存在。第二方面,本专利技术实施例提供一种缓存处理方法,包括:发送目标数据请求指令,以使得服务器若判断获知目标数据未命中,生成第一目标租约,并发送所述第一目标租约;根据所述第一目标租约,生成第二目标租约;将所述第二目标租约发送给所述服务器,所述服务器若判断获知所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,忽略缓存设置请求。第三方面,本专利技术实施例提供一种缓存处理系统,包括:请求模块,用于根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;发送模块,用于将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;判断模块,用于接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。第四方面,本专利技术实施例提供一种电子设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行程序时实现本专利技术第一方面提供的一种缓存处理方法的步骤。第五方面,本专利技术实施例提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本专利技术第一方面提供的一种缓存处理方法的步骤。本专利技术实施例提供的一种缓存处理方法及系统,通过在缓存处理过程中匹配第一目标租约和第二目标租约,如果二者不一致,说明在缓存缺失到读取数据再设置到缓存期间,目标数据发生了修改,因此不设置缓存,这样就避免了缓存和数据库不一致的缺陷。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。图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.一种缓存处理方法,其特征在于,包括:/n根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;/n将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;/n接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。/n
【技术特征摘要】
1.一种缓存处理方法,其特征在于,包括:
根据目标数据请求指令,若判断获知目标数据缓存未命中,生成第一目标租约;
将所述第一目标租约发送给客户端,以使得所述客户端生成第二目标租约;
接收所述第二目标租约,若所述第一目标租约不存在或所述第一目标租约与所述第二目标租约不一致,则不设置缓存。
2.根据权利要求1所述的缓存处理方法,其特征在于,还包括:
若所述第一目标租约与所述第二目标租约一致,接收所述目标数据,并将所述目标数据设置缓存,并清除所述第一目标租约,所述目标数据由所述客户端从数据库中获得。
3.根据权利要求2所述的缓存处理方法,其特征在于,还包括:
将所述第一目标租约的类型设置为缓存缺失型,若设置缓存的时间超过第一预设时间,则忽略所有设置缓存操作。
4.根据权利要求1所述的缓存处理方法,其特征在于,还包括:
若接收到清除指令,则清除缓存,并将所述第一目标租约的类型设置为缓存失效型,若所述第一目标租约的类型为缓存失效型,则忽略所有设置缓存操作。
5.根据权利要求4所述的缓存处理方法,其特征在于,还包括:
在对数据库进行更新之前,进行缓存失效操作;
并且在第二预设时间内,忽略所有设置缓存操作。
6.根据权利要求1所述的缓存处理方法,其特征在于,所述第一目标租约包括实体租约和对象租约,所述实体租约对应实体,所述对象租约对应对象,具体地:
在将实体设置到缓存情况下,若所述实体租约的类型为...
【专利技术属性】
技术研发人员:许高明,朱滨,张英男,兰博,
申请(专利权)人:北京仁科互动网络技术有限公司,
类型:发明
国别省市:北京;11
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。