一种数据处理方法及装置与流程

文档序号:15829157发布日期:2018-11-03 00:17阅读:134来源:国知局

本发明涉及通信技术领域,尤其涉及一种数据处理方法及装置。

背景技术

在使用缓存过程中,对数据的读取操作包括如下步骤:

步骤a1,应用请求读取缓存中的数据a;

步骤a2,当从缓存无法读取到数据a(即缓存未命中)时,应用会读取存储模块;

步骤a3,应用将从存储模块中读取到的数据a回写到缓存。

而缓存未命会导致对存储模块资源的使用造成较大的影响,尤其是数据a是热点数据(也即访问频次较高的数据)时,对此解释如下。

结合上述的缓存数据读写操作可以发现,当其他应用在步骤a2和步骤a3之间请求从缓存读取数据a时,由于数据a还未回写到缓存,就会产生读请求持续未命中的情形,而这些应用都会执行从存储模块读取数据a,并回写数据a到缓存的操作。而当数据a是热点数据时,会在短时间内产生大量的针对存储模块的读请求,这些请求会占用较多存储模块资源,引起存储模块短时失效,无法访问,也即引起存储毛刺。

对此结合图1具体说明如下:

假设初始时缓存中不存在数据key,数据请求对象x1,数据请求对象x2和数据请求对象x3分别去缓存里读数据,均未命中。其中,数据请求对象可以是不同前端业务模块,也可以是同一个前端业务模块里的不同进程或者线程。由于在步骤1到步骤7之间的时间段内,所有的数据请求对象去缓存读取数据key都会发生未命中的情形,因此导致步骤1到步骤7之间的时间段全部的需要读取key的数据请求对象都会去读存储模块中的key,并回写缓存。

当数据key是一个热数据时候,步骤1到步骤7之间的时间段内存储模块会接收到大量的读请求,导致存储模块短时间接收的读请求过多,出现毛刺。

在现有技术中,针对因缓存未命中引起存储毛刺的问题,目前尚未提出有效的解决方案。



技术实现要素:

本发明实施例提供一种数据处理方法及装置,以减少因缓存未命中引起的存储毛刺。

第一方面,本发明实施例提供了一种数据处理方法。该方法包括:获取第一数据请求对象在时刻t1发送的目标数据获取请求;根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块;在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。

第二方面,本发明实施例提供了一种数据处理方法。该方法包括:向缓存模块发送目标数据获取请求;接收根据目标数据获取请求在缓存模块中未获取到相应的目标数据时返回的请求响应消息;在请求响应消息携带第一指示时,根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块,其中,第一指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内未向至少一其他数据请求对象发送授权指示时返回的指示;在请求响应消息携带第二指示时,根据第二指示等待预设时间后重新向缓存模块发送目标数据获取请求,其中,第二指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内已向至少一其他数据请求对象发送授权指示时返回的指示。

第三方面,本发明实施例还提供一种数据处理装置。该装置包括:获取模块,用于获取第一数据请求对象在时刻t1发送的目标数据获取请求;第一判断模块,用于根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块;第一发送模块,用于在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;第二发送模块,用于在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。

第四方面,本发明实施例还提供一种数据处理装置。该装置包括:发送模块,用于向缓存模块发送目标数据获取请求;接收模块,用于接收根据目标数据获取请求在缓存模块中未获取到相应的目标数据时返回的请求响应消息;回写模块,用于在请求响应消息携带第一指示时,根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块,其中,第一指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内未向至少一其他数据请求对象发送授权指示时返回的指示;重请求模块,用于在请求响应消息携带第二指示时,根据第二指示等待预设时间后重新向缓存模块发送目标数据获取请求,其中,第二指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内已向至少一其他数据请求对象发送授权指示时返回的指示。

第五方面,本发明实施例还提供一种电子设备,包括:一个或多个处理器;存储器;以及一个或多个程序,其中,一个或多个程序被存储在存储器中,并且被配置成由一个或多个处理器执行,程序被执行时实现上述的数据处理方法中的步骤。

第六方面,本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现上述的数据处理方法中的步骤。

这样,本发明实施例中,通过获取第一数据请求对象在时刻t1发送的目标数据获取请求;根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块;在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。本发明实施例通过在缓存模块中未获取到相应的目标数据的预定时间段△t1内仅授权预定数量的数据请求对象从存储模块读取目标数据并回写到缓存模块,对于超过预定数量的数据请求对象指示其等待一定时间后重新向缓存模块请求目标数据,从而可以保证尽快的将目标数据写回缓存模块,也可以有效减少访问存储模块的数据请求对象的数量。不仅可以节省系统资源,也可以避免在缓存模块未命中目标数据时大量的数据请求对象去访问存储模块,减少了因缓存未命中引起的存储毛刺。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对本发明实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1是相关技术提供的产生存储毛刺的流程图;

图2是本发明实施例提供的数据处理方法的硬件环境的示意图;

图3是本发明实施例提供的数据处理方法的流程图;

图4是本发明实施例提供的在缓存未命中时数据读取操作的示意图;

图5是本发明又一实施例提供的数据处理方法的流程图;

图6是本发明又一实施例提供的在缓存未命中时数据读取操作的示意图;

图7是本发明又一实施例提供的在缓存未命中时数据读取操作的示意图;

图8是本发明又一实施例提供的数据处理方法的流程图;

图9是本发明又一实施例提供的数据处理方法的流程图;

图10是本发明又一实施例提供的数据处理方法的流程图;

图11是本发明实施例提供的数据处理装置的结构图;

图12是本发明又一实施例提供的数据处理装置的结构图;

图13是本发明又一实施例提供的数据处理装置的结构图;

图14是本发明又一实施例提供的数据处理装置的结构图;

图15是本发明又一实施例提供的数据处理装置的结构图;

图16是本发明又一实施例提供的数据处理装置的结构图;

图17是本发明又一实施例提供的数据处理装置的结构图;

图18是本发明又一实施例提供的数据处理装置的结构图;

图19是本发明实施例提供的电子设备的结构图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

根据本发明实施例,提供了一种数据处理方法。

可选地,在本实施例中,上述数据处理方法可以应用于如图2所示的由终端01和服务器02所构成的硬件环境中。如图2所示,终端01与服务器02可以通过网络进行连接,上述网络包括但不限于:广域网、城域网或局域网。终端01可以是pc、手机、平板电脑等。具体的,本发明实施例的数据处理方法可以由终端01执行,也可以由服务器02执行。

需要说明的是,图2所示的硬件环境还可以根据需求包含其他的硬件模块,本发明实施例的数据处理方法也可以由其他的硬件模块执行,本实施例对此不做限定。

本发明具体实施例的数据处理方法中,当数据请求对象a向缓存模块请求目标数据发生未命中时,如果在之前已经有其他的数据请求对象b被授权到存储模块去读取目标数据,且会将读取的目标数据回写缓存时,则通知数据请求对象a等待一段时间再发起新的请求,以从缓存模块中读取数据请求对象b回写到缓存模块的目标数据,减少了对存储模块的访问和存储毛刺现象的出现。

参见图3,图3是本发明实施例提供的数据处理方法的流程图,如图3所示,包括以下步骤:

步骤301、获取第一数据请求对象在时刻t1发送的目标数据获取请求。

本实施例中,第一数据请求对象可以是任意的数据请求对象,例如,可以是前端业务模块,也可以是前端业务模块里的进程或者线程。

步骤302、根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块。

具体的,第一数据请求对象向缓存模块请求目标数据,缓存模块可能由于目标数据已经失效,或者该目标数据还未曾被写入过缓存模块,或者缓存模块内存用尽主动淘汰了该目标数据等原因而未命中该目标数据,也即从缓存模块中未获取到目标数据。

本实施例中,在时刻t1缓存模块未命中第一数据请求对象所请求的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,在判断出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,执行步骤303,否则执行步骤304。

步骤303、向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据。

本实施例中,在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,也即已授权其他的数据请求对象去存储模块获取目标数据,为避免过多的数据请求对象访问存储模块,则向第一数据请求对象发送重请求反馈消息,指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据。

步骤304、向第一数据请求对象发送授权指示。

本实施例中,在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示,为了确保可以从存储模块读取目标数据并写回缓存模块以供后续的数据请求对象读取,则向第一数据请求对象发送授权指示,第一数据请求对象在接收到授权指示后从存储模块读取目标数据,并将目标数据回写到缓存模块。

对以上实施例结合附图说明如下。

本实施例中,如图4所示,假定在时刻t1,未命中第一数据请求对象所请求的目标数据,此时区别于现有技术,本发明实施例中,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示(图4中以向1个其他数据请求对象发送授权指示为例进行说明),如果是,说明存在其他数据请求对象已经被指示从存储模块读取目标数据并写回缓存模块,此时虽然目标数据还未回写到缓存模块,但其他数据请求对象有可能在未来一段时间内完成数据读取及缓存模块回写的操作。因此,为减少访问存储模块的数据请求对象的数量,指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据。结合图4可以发现,在t1到t1+△t2这段时间内,其他数据请求对象已经从存储模块读取目标数据并写回到缓存模块,因此第一数据请求对象在t1+△t2时刻所发起的请求能够命中目标数据,减少了对存储模块的访问,降低了存储毛刺现象的出现概率。

进一步结合图4可以发现,如果在时刻t1之前的预定时间段△t1内没有发送授权指示,则表明在t1到t1+△t2这段时间内,其他数据请求对象从存储模块读取到目标数据并回写到缓存模块的可能性相对较低。因此,此时为了尽快将目标数据从存储模块读取并回写缓存模块,以供后续的数据请求对象读取,本发明具体实施例中直接向第一数据请求对象发送授权指示,指示第一数据请求对象从存储模块读取目标数据并将目标数据回写缓存模块。

需要说明的是,上述步骤301至步骤304可以由终端执行,例如,参见图2,在终端01的应用a向终端01的缓存模块请求目标数据而缓存模块未命中该目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示,指示应用a等待时间△t2后重新向缓存模块请求目标数据,从而应用a等待时间△t2后重新向缓存模块请求目标数据;否则向应用a发送授权指示,从而应用a基于授权指示从终端01的存储模块获取目标数据并将目标数据写回缓存模块。可选的,上述步骤301至步骤304也可以由服务器执行。

本发明实施例的数据处理方法,通过获取第一数据请求对象在时刻t1发送的目标数据获取请求;根据目标数据获取请求在缓存模块模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块模块读取目标数据、及将目标数据回写到缓存模块模块;在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。

由上可知,本发明实施例通过在缓存模块中未获取到相应的目标数据的预定时间段△t1内仅授权预定数量的数据请求对象从存储模块读取目标数据并回写到缓存模块,对于超过预定数量的数据请求对象指示其等待一定时间后重新向缓存模块请求目标数据,从而可以保证尽快的将目标数据写回缓存模块,也可以有效减少访问存储模块的数据请求对象的数量。不仅可以节省系统资源,也可以避免在缓存模块未命中目标数据时大量的数据请求对象去访问存储模块,减少了因缓存未命中引起的存储毛刺。

本发明实施例中,可以授权一个数据请求对象从存储模块读取目标数据并回写到缓存模块,也可以是授权多个数据请求对象从存储模块读取目标数据并回写到缓存模块,下面对两种情况分别详细说明如下。

参见图5,图5是根据本发明又一实施例提供的数据处理方法的流程图。其中,授权一个数据请求对象从存储模块读取目标数据并回写到缓存模块。该数据处理方法包括如下步骤:

步骤501、获取第一数据请求对象在时刻t1发送的目标数据获取请求。

该步骤同上述步骤301,在此不再赘述。

步骤502、根据所述目标数据获取请求在缓存模块中未获取到相应的目标数据时,获取时刻t2,其中,时刻t2为上一次发送授权指示的时刻。

本实施例中,可以在每次发送授权指示同时记录发送授权指示的时刻。

步骤503、判断时刻t1和时刻t2的差值是否小于预设时间门限△t1。

本实施例中,预设时间门限△t1可以设置为预先统计的从授权数据请求对象从存储模块读取数据到将数据写回缓存模块的平均时间,也可以是预先统计的从授权数据请求对象从存储模块读取数据到将数据写回缓存模块的最大时间。需要说明的是,本实施例也可以根据实际情况将预设时间门限△t1设置为其他值,例如,在上述平均时间的基础上增加一些余量。

步骤504、向所述第一数据请求对象发送重请求反馈消息,所述重请求反馈消息用于指示所述第一数据请求对象等待时间△t2后重新向所述缓存请求所述目标数据。

步骤505、向所述第一数据请求对象发送所述授权指示。

本实施例中,第一数据请求对象在接收到授权指示后,从存储模块读取目标数据并将读取到的目标数据回写到缓存模块。

步骤506、将时刻t2更新为向第一数据请求对象发送授权指示的时刻。

本实施例中,若向第一数据请求对象发送授权指示,则将时刻t2更新为向第一数据请求对象发送授权指示的时刻。

本实施例中,结合图6所示,若时刻t1和时刻t2的差值小于预设时间门限△t1,说明在时刻t1之前的预设时间门限△t1内已经存在数据请求对象去存储模块读取数据,为了减少访问存储模块的数据请求对象的数量,执行步骤504,即通知数据请求对象等待,若时刻t1和时刻t2的差值大于或等于预设时间门限△t1,执行步骤505,即向第一数据请求对象发送授权指示,以尽快得到目标数据并回写缓存模块。

可选的,本实施例也可以在判断出时刻t1和时刻t2的差值小于预设时间门限△t1之后,进一步判断第一数据请求对象重新向缓存模块请求目标数据的次数是否小于预设值;其中,若判断出第一数据请求对象向缓存模块请求目标数据的次数小于预设值,则执行步骤504,否则执行步骤505。

本实施例中,若缓存模块多次未命中第一数据请求对象请求的目标数据,为了保证目标数据的正常使用,第一数据请求对象直接从存储模块读取目标数据,而不再继续等待。具体的,时间△t2可以根据实际情况进行设置。结合图6所示,例如,可以将时间△t2设置为大于或等于预设时间门限△t1,从而只要接收时刻t2所发送授权指示的数据请求对象能够在预设时间门限△t1内将目标数据回写到缓存模块,则时刻t2之后的数据请求对象只需要等待一次就可以从缓存模块读取到目标数据,大大减少访问存储模块的数据请求对象的数量。而结合附图可以发现,当△t1设置合理(如△t1为发送授权指示到数据回写到缓存模块的合理时间开销(如统计平均时间),又或者△t1为发送授权指示到数据回写到缓存模块的最大处理时间)时,如果△t2大于或等于△t1时,必然能够保证第一数据请求对象下次发起数据请求时,目标数据已经被读取并回写到缓存模块。

而如果△t2小于△t1,则第一数据请求对象下次发起数据请求时,可能只能部分命中。

当然,考虑到为尽快给第一数据请求对象提供目标数据,则本发明具体实施例中,△t2等于△t1。这种方式下,时刻t2到时刻t3之间所有的数据请求对象均使用相同的等待时间,处理方式比较简单。

为减少数据请求对象的等待时间,本发明具体实施例中,针对时刻t2到时刻t3之间的数据请求对象计算各自不同的等待时间,如下:

△t2=t2+△t1-t1

此时,如图7所示,在时刻t2到时刻t3之间所有的数据请求对象均有各自的等待时间,而其结果就是在时刻t2到时刻t3之间所有的数据请求对象都在时刻t3发起重新请求,提高了数据请求对象获取到目标数据的速度。

本发明实施例的数据处理方法,通过获取第一数据请求对象在时刻t1发送的目标数据获取请求;根据所述目标数据获取请求在缓存模块中未获取到相应的目标数据时,获取时刻t2,其中,时刻t2为上一次发送授权指示的时刻;判断时刻t1和时刻t2的差值是否小于预设时间门限△t1;在确认出所述时刻t1和所述时刻t2的差值小于预设时间门限△t1时,向所述第一数据请求对象发送重请求反馈消息;在确认出所述时刻t1和所述时刻t2的差值不小于预设时间门限△t1时,向所述第一数据请求对象发送所述授权指示;将所述时刻t2更新为向所述第一数据请求对象发送所述授权指示的时刻。本发明实施例通过比较时刻t1和时刻t2的差值是否小于预设时间门限△t1来确定是否授权第一数据请求对象访问存储模块,可以保证在预设时间门限△t1仅授权一个数据请求对象访问存储模块,其他的数据请求对象均处于等待状态,从而可以保证尽快的将目标数据写回缓存模块,也可以有效减少访问存储模块的数据请求对象的数量。不仅可以节省系统资源,也可以避免在缓存模块未命中时大量的数据请求对象去访问存储模块,减少了因缓存模块未命中引起的存储模块毛刺。

参见图8,图8是根据本发明又一实施例提供的数据处理方法的流程图。该数据处理方法包括如下步骤:

步骤801、获取第一数据请求对象在时刻t1发送的目标数据获取请求。该步骤同上述步骤501,在此不再赘述。

步骤802、根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,获取时刻t2,其中,时刻t2的初始值为首次发送授权指示的时刻。

该步骤同上述步骤502,在此不再赘述。

步骤803、判断时刻t1和时刻t2的差值是否小于预设时间门限△t1。

具体的,若时刻t1和时刻t2的差值小于预设时间门限△t1,则执行步骤804,否则执行步骤807。

步骤804、判断从时刻t2开始是否已向n个其他数据请求对象发送授权指示,其中,n为大于或等于2的整数。

本实施例中,n可以根据实际情况进行设置,可选的,n为2或3。具体的,根据目标数据获取请求在缓存模块中未获取到相应的目标数据时(也即在缓存模块未命中目标数据时)若仅授权一个数据请求对象在预设时间门限△t1内从存储模块读取目标数据并写回缓存模块,若该数据请求对象从存储模块读取目标数据并写回缓存模块失败,则会导致在下个周期内(也即t2+△t1之后的△t1时间内),缓存模块都无法命中目标数据,从而导致目标数据长时间不可用;然而,虽然n值越大,目标数据不可用状态产生的概率就越低,但是若n值过大,会导致过多的数据请求对象从存储模块读取目标数据并回写到缓存模块的重度操作。

具体的,若从时刻t2开始已向n个其他数据请求对象发送授权指示,执行步骤805,否则执行步骤806。

步骤805、向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据。

本实施例中,若从时刻t2开始已向n个其他数据请求对象发送授权指示,说明已授权n个数据请求对象在时刻t2之后的△t1内从存储模块读取数据并写回缓存模块,则指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据。

步骤806、向第一数据请求对象发送授权指示,维持时刻t2不变,并将当前已发送授权指示的数据请求对象的数量加1。

本实施例中,若从时刻t2开始已发送授权指示的数据请求对象的数量小于n,则向第一数据请求对象发送授权指示,维持时刻t2不变,并将当前已发送授权指示的数据请求对象的数量加1。

步骤807、向第一数据请求对象发送授权指示,并将时刻t2更新为向第一数据请求对象发送授权指示的时刻,将已发送授权指示的数据请求对象的数量设置为1。

本实施例中,若时刻t1和时刻t2的差值大于或等于预设时间门限△t1,则向第一数据请求对象发送授权指示,并将时刻t2更新为向第一数据请求对象发送授权指示的时刻,将已发送授权指示的数据请求对象的数量设置为1。

本发明实施例通过在预设时间门限△t1内授权前n个数据请求对象访问存储模块,其他的数据请求对象处于等待状态,不仅可以保证从存储模块读取目标数据并写回缓存模块,以避免目标数据不可用,也可以减少访问存储模块的数据请求对象的数量,避免在缓存模块未命中时大量的数据请求对象去访问存储模块,引起存储毛刺的问题。

可选的,上述数据处理方法还包括:在时刻t2启动计时器,其中,计时器的失效时间设置为△t1;

相应的,判断时刻t1和时刻t2的差值是否小于预设时间门限△t1包括:读取计时器的状态;在计时器的状态为有效状态时,确定时刻t1和时刻t2的差值小于预设时间门限△t1,否则确定时刻t1和时刻t2的差值大于或等于预设时间门限△t1;

相应的,将时刻t2更新为向第一数据请求对象发送授权指示的时刻包括:在向第一数据请求对象发送授权指示时重置并启动计时器。

本实施例中,通过将计时器的失效时间设置为△t1,从而可以通过读取计时器的状态方便快捷的判断出时刻t1和时刻t2的差值是否小于预设时间门限△t1,而无需存储多个时间(例如,时刻t1、时刻t2以及预设时间门限△t1等),也无需进行额外的计算。

可选的,△t2小于△t1。本实施例为了保证自时刻t2后的预设时间门限△t1内被授予权限从存储模块读取目标数据并回写到缓存模块的数据请求对象更新失败情况下,也会有新的数据请求对象在下个周期内(也即t2+△t1后的△t1时间内)访问存储模块,若△t2设置的过大,可能会导致下个周期内没有数据请求对象去访问存储模块,从而导致目标数据长时间不可用。

可选的,在判断出时刻t1和时刻t2的差值大于或等于预设时间门限△t1时,上述数据处理方法还包括:生成新的版本号,其中,版本号为缓存模块未命中目标数据的标识;

相应的,在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示,包括:向第一数据请求对象发送授权指示,其中,授权指示中包括新的版本号;

相应的,在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示之后,上述数据处理方法还包括:若接收到第一数据请求对象将目标数据写回缓存模块的请求,则判断第一数据请求对象所携带的版本号是否为最新的版本号;在确认出第一数据请求对象所携带的版本号为最新的版本号,将第一数据请求对象返回的目标数据写入缓存模块;在确认出第一数据请求对象所携带的版本号不是最新的版本号时,拒绝将第一数据请求对象返回的目标数据写入缓存模块。

本实施例中,可以通过版本号标识在缓存模块中未获取到相应的目标数据(也即缓存未命中目标数据)的操作,具体的,版本号可以是递增的序列。可选的,本实施例可以将每个周期内首次发送授权指示的时刻和在此时刻生成的版本号关联存储在数据表中(例如,哈希表)中。

例如,在判断出缓存未命中第一数据请求对象所请求的目标数据的时刻t1和时刻t2的差值大于或等于预设时间门限△t1时生成版本号001,将向第一数据请求对象发送授权指示的时刻t3和版本号001关联存储在哈希表中,并将时刻t2更新为向第一数据请求对象发送授权指示的时刻t3;在判断出缓存未命中第二数据请求对象所请求的目标数据的时刻t4和更新后的时刻t2的差值大于或等于预设时间门限△t1时生成版本号002,则将向第二数据请求对象发送授权指示的时刻t5和版本号002关联存储在哈希表中,以此类推。

本实施例可以在判断出时刻t1和时刻t2的差值大于或等于预设时间门限△t1,生成新的版本号,并将新的版本号包含在授权指示中发送给第一数据请求对象。在第一数据请求对象从存储模块读取目标数据并回写到缓存模块的过程中,判断第一数据请求对象所携带的版本号是否为当前最新的版本号,若是,则将第一数据请求对象返回的目标数据写入缓存模块;否则拒绝将第一数据请求对象返回的目标数据写入缓存模块,从而可以避免授权已经失效的数据请求对象将目标数据写回缓存模块。

可选的,缓存模块中存储有数据表,数据表用于存储时刻t2和版本号;

相应的,获取时刻t2包括:从数据表中获取时刻t2;

相应的,将时刻t2更新为向第一数据请求对象发送授权指示的时刻包括:将数据表中存储的时刻t2更新为向第一数据请求对象发送授权指示的时刻;

相应的,在生成新的版本号之后,上述方法还包括:将数据表中存储的版本号更新为新的版本号。

本实施例中,为了便于快速获取时刻t2和版本号,通过在缓存模块中存储数据表来维护缓存模块未命中不同数据时的时刻t2和版本号,可选的,上述数据表可以是哈希表。具体的,本实施例可以在时刻t1和时刻t2的差值大于或等于预设时间门限△t1时,生成新的版本号,并通过新的版本号和向第一数据对象发送授权指示的时刻更新数据表中存储的版本号和时刻t2。

根据本发明实施例,还提供了一种数据处理方法。参见图9,图9是根据本发明实施例的数据处理方法的流程图。该数据处理方法可以应用于数据请求对象,包括如下步骤:

步骤901、向缓存模块发送读取目标数据的请求。

本实施例中,可选的,在时刻t1缓存模块未命中目标数据时(也即在缓存模块中未获取到目标数据),缓存模块判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,在判断出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,可以在请求响应消息中携带第二指示,以指示数据请求对象等待预设时间,在判断出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,可以在请求响应消息中携带第一指示,以指示数据请求对象从存储模块读取目标数据并将目标数据回写到缓存模块。

步骤902、接收根据目标数据获取请求在缓存模块中未获取到相应的目标数据时返回的请求响应消息。

步骤903、在请求响应消息携带第一指示时,根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块,其中,第一指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内未向至少一其他数据请求对象发送授权指示时返回的指示。

步骤904、在请求响应消息携带第二指示时,根据第二指示等待预设时间后重新向缓存模块发送目标数据获取请求,其中,第二指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内已向至少一其他数据请求对象发送授权指示时返回的指示。

本发明实施例通过向缓存模块发送读取目标数据的请求;接收根据目标数据获取请求在缓存模块中未获取到相应的目标数据时返回的请求响应消息;在请求响应消息携带第一指示时,根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块,其中,第一指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内未向至少一其他数据请求对象发送授权指示时返回的指示;在请求响应消息携带第二指示时,根据第二指示等待预设时间后重新向缓存模块发送目标数据获取请求,其中,第二指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内已向至少一其他数据请求对象发送授权指示时返回的指示。本发明实施例可以有效减少访问存储模块的数据请求对象的数量,不仅可以节省系统资源,也可以避免在缓存未命中时大量的数据请求对象去访问存储模块,减少了因缓存未命中引起的存储毛刺。

可选的,第一指示还包括版本号,其中,版本号为缓存模块未命中目标数据的标识,根据第一指示从存储模块读取目标数据并回写到缓存模块包括:从存储模块读取目标数据;将从存储模块读取到的目标数据和所携带的版本号发送给缓存模块,以根据所携带的版本号判断是否将从存储模块读取到的目标数据写入缓存模块。

本实施例中,数据请求对象在从存储模块读取目标数据之后,将从存储模块读取到的目标数据和所携带的版本号发送给缓存模块,从而缓存模块可以判断数据请求对象所携带的版本号是否为最新的版本号,只有在数据请求对象所携带的版本号为最新的版本号才将数据请求对象返回的目标数据写入缓存模块,以避免授权已经失效的数据请求对象写回目标数据。

以下结合图10对本发明实施例进行说明:

如图10所示,本发明实施例的数据处理方法包括如下步骤:

步骤s1,数据请求对象a在时刻t1从缓存模块读取key。

步骤s2,当缓存模块未命中key,且满足条件a,发送一授权指示,授权数据请求对象a从存储模块读取key。

本实施例中,条件a为t1和t2的差值不小于△t1,其中,时刻t2为上一次发送授权指示的时刻,△t1为预设时间门限。在缓存模块未命中key且t1和t2的差值不小于△t1时,向数据请求对象a发送授权指示,以授权数据请求对象a从存储模块读取key并回写到缓存模块,此外,将t2更新为向数据请求对象a发送授权指示的时刻。

步骤s3,数据请求对象b从缓存模块读取key。

具体的,数据请求对象b在时刻t3从缓存模块读取key,其中,时刻t3位于时刻t1之后。

步骤s4,缓存模块未命中key,且不满足条件a,发送数据重请求指示,指示数据请求对象b等待时间△t2再重试。

本实施例中,缓存模块未命中key,且t3和t2的差值小于△t1,指示数据请求对象b等待时间△t2再重新向缓存模块读取key。

步骤s5,数据请求对象c从缓存模块读取key。

具体的,数据请求对象c在时刻t4从缓存模块读取key,其中,时刻t4位于时刻t3之后。

步骤s6,缓存模块未命中key,且不满足条件a,发送数据重请求指示,指示数据请求对象c等待时间△t2再重试。

本实施例中,缓存模块未命中key,且t4和t2的差值小于△t1,指示数据请求对象c等待时间△t2再重新向缓存模块读取key。

步骤s7,数据请求对象a从存储模块读取key。

步骤s8,数据请求对象a把key写回缓存模块。

步骤s9,数据请求对象b从缓存模块读取key,命中key。

步骤s10,数据请求对象c从缓存模块读取key,命中key。

由上可知,本实施例在时刻t1之后的△t1时间内仅授权数据请求对象a从存储模块读取key并回写到缓存模块,而在时刻t1之后从缓存模块读取key的数据请求对象b和数据请求对象c均处于等待状态,从而不仅可以保证尽快的将key写回缓存模块,也可以有效减少访问存储模块的数据请求对象的数量,不仅可以节省系统资源,也可以避免在缓存未命中时大量的数据请求对象去访问存储模块,引起存储毛刺的问题。

需要说明的是,上述数据请求对象、缓存模块和存储模块可以均属于终端01,也可以是均属于服务器02,也可以是数据请求对象和缓存模块属于终端01、存储模块属于服务器02等,本发明实施例对此不做限定。

参见图11,图11是本发明实施提供的数据处理装置的结构图,如图11所示,数据处理装置1100包括获取模块1101、第一判断模块1102、第一发送模块1103和第二发送模块1104,其中:

获取模块1101,用于获取第一数据请求对象在时刻t1发送的目标数据获取请求;

第一判断模块1102,用于根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块;

第一发送模块1103,用于在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;

第二发送模块1104,用于在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。

可选的,参见图12,第一判断模块1102包括:第一获取单元11021,用于获取时刻t2,其中,时刻t2为上一次发送授权指示的时刻;第一判断单元11022,用于判断时刻t1和时刻t2的差值是否小于预设时间门限△t1;第一确定单元11023,用于在确认出时刻t1和时刻t2的差值小于预设时间门限△t1时,确定在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示,在确认出时刻t1和时刻t2的差值不小于预设时间门限△t1时,确定在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示;

相应的,数据处理装置1100还包括:第一更新模块1105,用于在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示之后,将时刻t2更新为向第一数据请求对象发送授权指示的时刻。

可选的,参见图13,第一判断模块1102包括:第二获取单元11024,用于获取时刻t2,其中,时刻t2的初始值为首次发送授权指示的时刻;第二判断单元11025,用于判断时刻t1和时刻t2的差值是否小于预设时间门限△t1以及判断从时刻t2开始是否已向n个其他数据请求对象发送授权指示,其中,n为大于或等于2的整数;第二确定单元11026,在确认出时刻t1和时刻t2的差值小于预设时间门限△t1且从时刻t2开始已向n个其他数据请求对象发送授权指示,确定在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示,否则确定在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示;

相应的,第二发送模块1104包括:第一发送单元11041,用于在确认出时刻t1和时刻t2的差值大于或等于预设时间门限△t1时,向第一数据请求对象发送授权指示,并将时刻t2更新为向第一数据请求对象发送授权指示的时刻,将已发送授权指示的数据请求对象的数量设置为1;第二发送单元11042,用于在确认出从时刻t2开始未向n个其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示,维持时刻t2不变,并将当前已发送授权指示的数据请求对象的数量加1。

可选的,n为2或3。

可选的,△t2=△t1或△t2=△t1-(t1-t2)。

可选的,参见图14,数据处理装置1100还包括:启动模块1106,用于在时刻t2启动计时器,其中,计时器的失效时间设置为△t1;

第一判断单元11022具体用于:读取计时器的状态;在计时器的状态为有效状态时,确定时刻t1和时刻t2的差值小于预设时间门限△t1,否则确定时刻t1和时刻t2的差值大于或等于预设时间门限△t1;

第一更新模块1105具体用于:在向第一数据请求对象发送授权指示时重置并启动计时器。

可选的,△t2小于△t1。

可选的,参见图15,数据处理装置1100还包括:生成模块1107,用于在判断出时刻t1和时刻t2的差值大于或等于预设时间门限△t1时,生成新的版本号,其中,版本号为缓存模块未命中目标数据的标识;

第二发送模块1104具体用于:向第一数据请求对象发送授权指示,其中,授权指示中包括新的版本号;

相应的,数据处理装置1100还包括:

第二判断模块1108,用于在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示之后,接收第一数据请求对象将目标数据写回缓存模块的请求,判断第一数据请求对象所携带的版本号是否为最新的版本号;写入模块1109,用于在确认出第一数据请求对象所携带的版本号为最新的版本号,将第一数据请求对象返回的目标数据写入缓存模块,在确认出第一数据请求对象所携带的版本号不是最新的版本号时,拒绝将第一数据请求对象返回的目标数据写入缓存模块。

可选的,参见图16,缓存模块中存储有数据表,数据表用于存储时刻t2和版本号;

第一获取单元11021具体用于:从数据表中获取时刻t2;

第一更新模块1105具体用于:将数据表中存储的时刻t2更新为向第一数据请求对象发送授权指示的时刻;

上述数据处理装置1100还包括:第二更新模块1110,用于在生成新的版本号之后,将数据表中存储的版本号更新为新的版本号。

本发明实施例的数据处理装置1100,通过获取模块1101获取第一数据请求对象在时刻t1发送的目标数据获取请求;第一判断模块1102根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块;第一发送模块1103在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;第二发送模块1104在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。本发明实施例通过在缓存模块未命中目标数据的预定时间段△t1内仅授权预定数量的数据请求对象从存储模块读取目标数据并回写到缓存模块,对于超过预定数量的数据请求对象指示其等待一定时间后重新向缓存模块请求目标数据,从而可以有效减少访问存储模块的数据请求对象的数量,不仅可以节省系统资源,也可以避免在缓存模块未命中时大量的数据请求对象去访问存储模块,引起存储模块毛刺的问题。

参见图17,图17是本发明又一实施提供的数据处理装置的结构图,如图17所示,数据处理装置1700包括发送模块1701、接收模块1702、回写模块1703和重请求模块1704,其中:

发送模块1701,用于向缓存模块发送目标数据获取请求;

接收模块1702,用于接收根据目标数据获取请求在缓存模块中未获取到相应的目标数据时返回的请求响应消息;

回写模块1703,用于在请求响应消息携带第一指示时,根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块,其中,第一指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内未向至少一其他数据请求对象发送授权指示时返回的指示;

重请求模块1704,用于在请求响应消息携带第二指示时,根据第二指示等待预设时间后重新向缓存模块发送目标数据获取请求,其中,第二指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内已向至少一其他数据请求对象发送授权指示时返回的指示。

可选的,参见图18,第一指示还包括版本号,其中,版本号为缓存模块未命中目标数据的标识,回写模块1703包括:读取单元17031,用于根据第一指示从存储模块读取目标数据;发送单元17032,用于将从存储模块读取到的目标数据和所携带的版本号发送给缓存模块,以根据所携带的版本号判断是否将从存储模块读取到的目标数据写入缓存模块。

本发明实施例的数据处理装置1700,通过发送模块1701向缓存模块发送目标数据获取请求;接收模块1702接收根据目标数据获取请求在缓存模块中未获取到相应的目标数据时返回的请求响应消息;回写模块1703在请求响应消息携带第一指示时,根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块,其中,第一指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内未向至少一其他数据请求对象发送授权指示时返回的指示;重请求模块1704在请求响应消息携带第二指示时,根据第二指示等待预设时间后重新向缓存模块发送目标数据获取请求,其中,第二指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内已向至少一其他数据请求对象发送授权指示时返回的指示。本发明实施例可以有效减少访问存储模块的数据请求对象的数量,不仅可以节省系统资源,也可以避免在缓存模块未命中时大量的数据请求对象去访问存储模块,引起存储毛刺的问题。

参见图19,图19是本发明实施提供的电子设备的结构图,如图19所示,电子设备1900包括:至少一个处理器1901、存储器1902、至少一个网络接口1904和用户接口1903。电子设备1900中的各个组件通过总线系统1905耦合在一起。可理解,总线系统1905用于实现这些组件之间的连接通信。总线系统1905除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图19中将各种总线都标为总线系统1905。

其中,用户接口1903可以包括显示器、键盘或者点击设备(例如,鼠标,轨迹球(trackball)、触感板或者触摸屏等。

可以理解,本发明实施例中的存储器1902可以是易失性存储器或非易失性存储器,或可包括易失性和非易失性存储器两者。其中,非易失性存储器可以是只读存储器(read-onlymemory,rom)、可编程只读存储器(programmablerom,prom)、可擦除可编程只读存储器(erasableprom,eprom)、电可擦除可编程只读存储器(electricallyeprom,eeprom)或闪存。易失性存储器可以是随机存取存储器(randomaccessmemory,ram),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的ram可用,例如静态随机存取存储器(staticram,sram)、动态随机存取存储器(dynamicram,dram)、同步动态随机存取存储器(synchronousdram,sdram)、双倍数据速率同步动态随机存取存储器(doubledataratesdram,ddrsdram)、增强型同步动态随机存取存储器(enhancedsdram,esdram)、同步连接动态随机存取存储器(synchlinkdram,sldram)和直接内存总线随机存取存储器(directrambusram,drram)。本文描述的系统和方法的存储器1902旨在包括但不限于这些和任意其它适合类型的存储器。

在一些实施方式中,存储器1902存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统19021和应用程序19022。

其中,操作系统19021,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序19022,包含各种应用程序,例如媒体播放器(mediaplayer)、浏览器(browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序19022中。

在本发明实施例中,通过调用存储器1902存储的程序或指令,具体的,可以是应用程序19022中存储的程序或指令,处理器1901用于:获取第一数据请求对象在时刻t1发送的目标数据获取请求;根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块;在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。

上述本发明实施例揭示的方法可以应用于处理器1901中,或者由处理器1901实现。处理器1901可能是一种集成电路芯片,具有信号的处理能力。在实现过程中,上述方法的各步骤可以通过处理器1901中的硬件的集成逻辑电路或者软件形式的指令完成。上述的处理器1901可以是通用处理器、数字信号处理器(digitalsignalprocessor,dsp)、专用集成电路(applicationspecificintegratedcircuit,asic)、现成可编程门阵列(fieldprogrammablegatearray,fpga)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。可以实现或者执行本发明实施例中的公开的各方法、步骤及逻辑框图。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。结合本发明实施例所公开的方法的步骤可以直接体现为硬件译码处理器执行完成,或者用译码处理器中的硬件及软件模块组合执行完成。软件模块可以位于随机存储器,闪存、只读存储器,可编程只读存储器或者电可擦写可编程存储器、寄存器等本领域成熟的存储介质中。该存储介质位于存储器1902,处理器1901读取存储器1902中的信息,结合其硬件完成上述方法的步骤。

可以理解的是,本文描述的这些实施例可以用硬件、软件、固件、中间件、微码或其组合来实现。对于硬件实现,处理单元可以实现在一个或多个专用集成电路(applicationspecificintegratedcircuits,asic)、数字信号处理器(digitalsignalprocessing,dsp)、数字信号处理设备(dspdevice,dspd)、可编程逻辑设备(programmablelogicdevice,pld)、现场可编程门阵列(field-programmablegatearray,fpga)、通用处理器、控制器、微控制器、微处理器、用于执行本申请所述功能的其它电子单元或其组合中。

对于软件实现,可通过执行本文所述功能的模块(例如过程、函数等)来实现本文所述的技术。软件代码可存储在存储器中并通过处理器执行。存储器可以在处理器中或在处理器外部实现。

可选的,处理器1901执行所述判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,包括:获取时刻t2,其中,时刻t2为上一次发送授权指示的时刻;判断时刻t1和时刻t2的差值是否小于预设时间门限△t1;在确认出时刻t1和时刻t2的差值小于预设时间门限△t1时,确定在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示;在确认出时刻t1和时刻t2的差值不小于预设时间门限△t1时,确定在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示;

相应的,处理器1901还用于:在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示之后,将时刻t2更新为向第一数据请求对象发送授权指示的时刻。

可选的,处理器1901执行所述判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,包括:获取时刻t2,其中,时刻t2的初始值为首次发送授权指示的时刻;判断时刻t1和时刻t2的差值是否小于预设时间门限△t1以及判断从时刻t2开始是否已向n个其他数据请求对象发送授权指示,其中,n为大于或等于2的整数;在确认出时刻t1和时刻t2的差值小于预设时间门限△t1且从时刻t2开始已向n个其他数据请求对象发送授权指示,确定在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示,否则确定在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示;

相应的,处理器1901执行所述在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示包括:在确认出时刻t1和时刻t2的差值大于或等于预设时间门限△t1时,向第一数据请求对象发送授权指示,并将时刻t2更新为向第一数据请求对象发送授权指示的时刻,将已发送授权指示的数据请求对象的数量设置为1;在确认出从时刻t2开始未向n个其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示,维持时刻t2不变,并将当前已发送授权指示的数据请求对象的数量加1。

可选的,n为2或3。

可选的,△t1=△t2或△t1=△t2-(t1-t2)。

可选的,处理器1901还用于:在时刻t2启动计时器,其中,计时器的失效时间设置为△t2;

相应的,处理器1901执行所述判断时刻t1和时刻t2的差值是否小于预设时间门限△t2包括:读取计时器的状态;在计时器的状态为有效状态时,确定时刻t1和时刻t2的差值小于预设时间门限△t2,否则确定时刻t1和时刻t2的差值大于或等于预设时间门限△t2;

相应的,处理器1901执行所述将时刻t2更新为向第一数据请求对象发送授权指示的时刻包括:在向第一数据请求对象发送授权指示时重置并启动计时器。

可选的,△t1小于△t2。

可选的,处理器1901还用于:在判断出时刻t1和时刻t2的差值大于或等于预设时间门限△t1时,生成新的版本号,其中,版本号为缓存模块未命中目标数据的标识;

相应的,处理器1901执行所述在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示,包括:向第一数据请求对象发送授权指示,其中,授权指示中包括新的版本号;

相应的,处理器1901还用于:在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示之后,接收第一数据请求对象将目标数据写回缓存模块的请求,判断第一数据请求对象所携带的版本号是否为最新的版本号;在确认出第一数据请求对象所携带的版本号为最新的版本号,将第一数据请求对象返回的目标数据写入缓存模块;在确认出第一数据请求对象所携带的版本号不是最新的版本号时,拒绝将第一数据请求对象返回的目标数据写入缓存模块。

可选的,所述缓存模块中存储有数据表,所述数据表用于存储所述时刻t2和所述版本号;

处理器1901执行所述获取时刻t2包括:从数据表中获取时刻t2;

处理器1901执行所述将时刻t2更新为向第一数据请求对象发送授权指示的时刻包括:将数据表中存储的时刻t2更新为向第一数据请求对象发送授权指示的时刻;

处理器1901还用于:在生成新的版本号之后,将数据表中存储的版本号更新为新的版本号。

电子设备1900能够实现前述方法实施例中实现的各个过程,为避免重复,这里不再赘述。

本发明实施例的电子设备1900,获取第一数据请求对象在时刻t1发送的目标数据获取请求;根据目标数据获取请求在缓存模块中未获取到相应的目标数据时,判断在时刻t1之前的预定时间段△t1内是否已向至少一其他数据请求对象发送授权指示,其中,授权指示用于指示其他数据请求对象从存储模块读取目标数据、及将目标数据回写到缓存模块;在确认出在时刻t1之前的预定时间段△t1内已向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送重请求反馈消息,重请求反馈消息用于指示第一数据请求对象等待时间△t2后重新向缓存模块请求目标数据;在确认出在时刻t1之前的预定时间段△t1内未向至少一其他数据请求对象发送授权指示时,向第一数据请求对象发送授权指示。本发明实施例通过在缓存模块中未获取到相应的目标数据的预定时间段△t1内仅授权预定数量的数据请求对象从存储模块读取目标数据并回写到缓存模块,对于超过预定数量的数据请求对象指示其等待一定时间后重新向缓存模块请求目标数据,从而可以保证尽快的将目标数据写回缓存模块,也可以有效减少访问存储模块的数据请求对象的数量。不仅可以节省系统资源,也可以避免在缓存模块未命中目标数据时大量的数据请求对象去访问存储模块,减少了因缓存未命中引起的存储毛刺。

可选的,本发明实施例还提供一种电子设备,包括:至少一个处理器、存储器、至少一个网络接口和用户接口。服务器中的各个组件通过总线系统耦合在一起。可理解,总线系统用于实现这些组件之间的连接通信。总线系统除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。

在一些实施方式中,存储器存储了如下的元素,可执行模块或者数据结构,或者他们的子集,或者他们的扩展集:操作系统和应用程序。

其中,操作系统,包含各种系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务。应用程序,包含各种应用程序,例如媒体播放器(mediaplayer)、浏览器(browser)等,用于实现各种应用业务。实现本发明实施例方法的程序可以包含在应用程序中。

在本发明实施例中,通过调用存储器存储的程序或指令,具体的,可以是应用程序中存储的程序或指令,处理器用于:向缓存模块发送目标数据获取请求;接收根据目标数据获取请求在缓存模块中未获取到相应的目标数据时返回的请求响应消息;在请求响应消息携带第一指示时,根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块,其中,第一指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内未向至少一其他数据请求对象发送授权指示时返回的指示;在请求响应消息携带第二指示时,根据第二指示等待预设时间后重新向缓存模块发送目标数据获取请求,其中,第二指示为确认出在缓存模块中未获取到相应的目标数据之前的预定时间段内已向至少一其他数据请求对象发送授权指示时返回的指示。

可选的,第一指示还包括版本号,其中,版本号为缓存模块未命中目标数据的标识,处理器执行所述根据第一指示从存储模块读取目标数据、及将目标数据回写到缓存模块包括:根据第一指示从存储模块读取目标数据;将从存储模块读取到的目标数据和所携带的版本号发送给缓存模块,以根据所携带的版本号判断是否将从存储模块读取到的目标数据写入缓存模块。

本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任意一个方法实施例中的数据处理方法中的步骤。

在本发明的上述实施例中,对各个实施例的描述各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。

所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述的系统、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。

在本申请所提供的实施例中,应该理解到,所揭露的装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,装置或单元的间接耦合或通信连接,可以是电性,机械或其它的形式。

所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。

另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。

所述功能如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:u盘、移动硬盘、rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1