一种动态缓存数据失效调度方法、装置和缓存系统与流程

文档序号:14950741发布日期:2018-07-17 22:29阅读:98来源:国知局

本申请实施例涉及计算机技术领域,具体涉及一种动态缓存数据失效调度方法、装置和缓存系统。



背景技术:

缓存是指可以进行高速数据交换的存储器,具有读取速率高的优点。通常将读取频率高的数据存入缓存,客户端请求数据时优先从缓存读取数据。若缓存中不存在客户端请求的数据,才从数据库查询该数据。这种数据存储和调度方式有效缓解了数据库的访问压力,提高了数据的读取效率。然而,缓存的空间是有限的,在缓存空间紧张时,需要通过一定的方法清理缓存中的数据。目前,通常会设置缓存数据超时时间,当缓存数据超过这个时间后会自动失效。然而,由于缓存数据失效的时间是固定的,不能根据缓存数据的使用情况进行调整,存在灵活性不高的缺陷。例如,有可能存在缓存数据失效后下一时刻需要立即使用该缓存数据的情况,这时只能从数据库中读取该数据,带来较大的读写开销。



技术实现要素:

本申请实施例提供了一种动态缓存数据失效调度方法、装置和缓存系统,旨在解决现有技术缓存数据失效方法灵活性不高、读写开销大的技术问题。

为此,本申请实施例提供如下技术方案:

本申请实施例的第一方面公开了一种动态缓存数据失效调度方法方法,包括:

当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;

根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;

若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;

若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

可选地,所述满足预设的触发条件包括:

当确定缓存系统的存储空间不足时,确定满足预设的触发条件;或者,

当预设的失效检查周期开始时,确定满足预设的触发条件。

可选地,所述根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件包括:

根据缓存数据的历史调用频率,判断从当前时间起、预设个数的时间单元内,所述缓存数据的调用频率是否大于设定频率阈值或者所述缓存数据的调用频率等级是否大于设定的等级阈值;

若所述缓存数据的调用频率大于设定频率阈值或者所述缓存数据的调用频率等级大于设定的等级阈值,确定存在高频调用事件;

若所述缓存数据的调用频率不大于设定频率阈值或者所述缓存数据的调用频率等级不大于设定的等级阈值,确定不存在高频调用事件。

可选地,所述延长所述缓存数据的缓存贮存时间包括:

将所述缓存数据的缓存贮存时间延长预设个数的时间单元;或者,

确定高频调用事件的发生时间,将所述缓存数据的缓存贮存时间延长至该高频调用事件发生时间之后。

可选地,所述方法还包括:

根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;

若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

可选地,所述将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列包括:

在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;

将所述查询开销符合设定条件的缓存数据移除。

可选地,所述查询开销符合设定条件的缓存数据包括:

查询开销大于设定开销阈值的缓存数据;或者,

将缓存数据的查询开销由高低到低排序,将排在前n位的查询开销对应的缓存数据作为符合设定条件的缓存数据。

可选地,所述查询开销通过以下方式确定:

根据所述缓存数据的查询时间、查询复杂度、查询数据量中的一种或多种加权计算得到所述查询开销。

本申请实施例的第二方面,公开了一种数据缓存方法,所述方法包括:

存储缓存数据以及所述缓存数据的缓存贮存时间;

记录所述缓存数据的调用数据,所述调用数据至少包括所述缓存数据的历史调用频率;

当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

可选地,所述方法还包括:

根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;

若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

可选地,所述将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列包括:

在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;

将所述查询开销符合设定条件的缓存数据移除。

本申请实施例的第三方面,公开了一种调度装置,包括:

确定单元,用于当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;

判断单元,用于根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;

延长单元,用于若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;

加入单元,用于若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

本申请实施例的第四方面,公开了一种缓存系统,包括存储装置、监控装置、调度装置,其中:

所述存储装置用于存储缓存数据以及所述缓存数据的缓存贮存时间;

所述监控装置用于记录所述缓存数据的调用数据,所述调用数据至少包括所述缓存数据的历史调用频率;

所述调度装置用于当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

本申请实施例的第五方面,公开了一种用于动态缓存数据失效调度的装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行如第一方面所述的动态缓存数据失效调度的方法。

本申请实施例的第六方面,公开了一种用于动态缓存数据失效调度的装置,包括有存储器,以及一个或者一个以上的程序,其中一个或者一个以上程序存储于存储器中,且经配置以由一个或者一个以上处理器执行如第二方面所述的数据缓存的方法。

本申请实施例的第七方面,公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如第一方面所述的动态缓存数据失效调度的方法。

本申请实施例的第八方面,公开了一种机器可读介质,其上存储有指令,当由一个或多个处理器执行时,使得装置执行如第二方面所述的数据缓存方法。

本申请实施例提供的动态缓存数据失效调度方法、装置,调度装置可以根据缓存贮存时间到达的缓存数据的历史调用频率判断在预设时间段内是否存在高频调用事件,若存在,延长缓存数据的缓存贮存时间,当高频调用事件发生时,客户端可以直接从存储装置中调用该缓存数据,而不需要查询数据库再从数据库中调用该缓存数据,减少查询开销,解决了超时时间固定带来的灵活性不强的问题;若不存在,则将缓存数据加入待失效缓存数据队列,以便调度装置可以及时清理缓存数据,减少存储空间的占用,使得缓存系统可以正常运行。

附图说明

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

图1为本申请实施例提供的一种动态缓存数据失效调度方法的流程图;

图2为缓存数据的历史调用频率等级曲线图;

图3为本申请实施例提供的一种动态缓存数据失效调度方法的另一流程图;

图4为本申请实施例提供的一种数据缓存方法的流程图;

图5为本申请实施例提供的一种数据缓存结构图;

图6为本申请实施例提供的一种动态缓存数据失效调度方法的再一流程图;

图7为本申请实施例提供的一种数据缓存系统示意图;

图8为本申请实施例提供的一种调度装置示意图;

图9为本申请实施例提供的一种用于动态缓存数据失效调度装置的框图;

图10为本申请实施例提供的一种用于数据缓存装置的框图。

具体实施方式

本申请实施例提供了一种动态缓存数据失效调度方法、装置和缓存系统,可以有效提高缓存数据失效的灵活性,有效降低读写开销。

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

参见图1,图1为本申请实施例提供的一种动态缓存数据失效调度方法的流程图,所述方法应用于调度装置,该方法可以包括:

s101,当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据。

在一些实施方式中,调度装置可以预先设定触发条件,当调度装置检测到当前的触发条件满足预设的触发条件时,触发缓存失效的判断处理,例如可以根据存储装置保存的缓存数据的贮存时间,确定贮存时间已到达的缓存数据。其中,所述满足预设的触发条件可以包括:

(1)当预设的失效检查周期开始时,确定满足预设的触发条件。

可以理解的是,调度装置可以预先设置失效检查周期,以便在每个失效检查周期开始时可以对存储装置中的缓存数据进行一次缓存失效的检查,从而使得调度装置可以及时处理缓存贮存时间已到达的缓存数据,节省存储空间。

需要注意的是,调度装置并不是对存储装置中所有缓存数据进行失效检查,而是只检查缓存贮存时间到达的缓存数据,这样处理是为了减少检查时间以及降低因检查缓存贮存时间到达的缓存数据带来的对系统资源的浪费。

其中,失效检查周期可以由用户根据自身的实际需要来设定,比如每1个小时自动进行一次失效检查,也可以由用户手动触发失效检查,等等。当然,也可以通过其他方式设定失效检查周期。

在本申请实施例中,缓存贮存时间是指每项缓存数据可以在存储装置中停留的时间长,每项缓存数据都有与其对应的缓存贮存时间,该缓存贮存时间可以由缓存系统设定。对于不同的缓存数据,缓存系统可以设定不同的缓存贮存时间,比如,对于调用频率比较大的缓存数据,缓存系统可以将其缓存贮存时间设定为10分钟,对比调用频率较小的缓存数据,缓存系统可以将其缓存贮存时间设定为5分钟,等等。当然,缓存系统也可以根据其他形式进行缓存贮存时间的设定,在此不做限定。

(2)当确定缓存系统的存储空间不足时,确定满足预设的触发条件。可以理解的是,缓存系统都有其固定大小的存储空间,当缓存系统的剩余缓存空间达到一个阈值时,缓存系统可以发送告警事件给调度装置,以便调度装置可以及时清理缓存空间,从而使得缓存系统可以正常运行。

基于上述方法,当缓存系统的存储空间不足时,就可以直接触发调度装置确定存储装置中缓存贮存时间到达的缓存数据,不需要等到失效检查周期开始时再触发调度装置,这样使得调度装置可以及时清理在未来一段时间内不被调用的缓存数据,释放存储空间,保证缓存系统可以正常运行。

举例说明,比如,缓存系统的存储空间为4g,缓存系统设定的告警阈值为750m,当缓存系统剩余的存储空间小于等于750m时,缓存系统发送告警事件以触发调度装置进行相应的处理操作。当调度装置接收到告警事件时,判断出该告警事件满足预设的触发条件,则调度装置确定出存储装置中缓存贮存时间到达的缓存数据,以便调度装置可以及时处理缓存贮存时间到达的缓存数据,减少对存储空间的占用。

在本申请实施例中,当调度装置检测到满足预设的触发条件时,就可以确定存储装置中缓存贮存时间到达的缓存数据,以便调度装置对缓存贮存时间已到达的缓存数据进行删除或时间延长等处理,从而可以能够及时清理缓存数据,保证缓存空间不处于紧张状态。

s102,根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若存在高频调用事件,执行步骤s103;若不存在高频调用事件,执行步骤s104。

在一些实施方式中,所述根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件包括:根据缓存数据的历史调用频率,判断从当前时间起、预设个数的时间单元内,所述缓存数据的调用频率是否大于设定频率阈值或者所述缓存数据的调用频率等级是否大于设定的等级;若所述缓存数据的调用频率大于设定频率阈值或者所述缓存数据的调用频率等级大于设定的等级,确定存在高频调用事件;若所述缓存数据的调用频率不大于设定频率阈值或者所述缓存数据的调用频率等级不大于设定的等级,确定不存在高频调用事件。

在本申请实施例中,监控装置可以记录缓存数据的历史调用频率,具体地,可以记录缓存数据在一个时间单元内的调用频率。由于缓存系统中,在相同时间段内对缓存数据的调用频率是类似的,具有一定的规律。因此,可以根据缓存数据的历史调用情况,预测缓存数据在未来的调用情况。具体地调度装置可以根据缓存数据的历史调用频率,判断从当前时间起、预设个数的时间单元内,缓存数据的调用频率是否大于设定的频率阈值,若大于,则确定存在高频调用事件;若不大于,确定不存在高频调用事件。比如,设定的频率阈值为fz,调度装置根据缓存数据的历史调用频率确判断从当前时刻起、2个时间单元内该缓存数据的调用频率f1>fz,则确定存在高频调用事件。其中,频率阈值可以根据历史调用频率或相关经验设定。

其中,时间单元具体可以设置为1分钟,则调度装置可以判断预设的5个时间单元,即5分钟内,缓存数据的调用频率是否大于设定频率阈值;也可以判断预设的10个时间单元,即10分钟内,缓存数据的调用频率是否大于设定频率阈值,等等,具体地,调度装置可以根据缓存数据的实际调用情况设置时间单元大小以及预设个数。

下面以一个实例进行说明。监控装置可以记录缓存数据的历史调用频率,根据历史调用频率设定频率阈值。所述频率阈值用于衡量是否存在高频调用事件。频率阈值的设定可以根据经验或者需要设定。例如,可以获取缓存数据历史调用频率的平均值,将该平均值的120%作为频率阈值。例如历史调用频率的均值为60次/分,那么可以将频率阈值设置为72次/分。当然,以上仅为示例性说明,不视为对本申请的限制。调度装置在判断是否存在高频事件时,可以判断从当前时间起、预设个数的时间单元内,所述缓存数据的历史调用频率是否大于设定的频率阈值。例如,假设时间单元的长度为1分钟、预设个数为5,当前时刻为10:00,调度装置需要判断从10:00点起到10:05分这段时间内,缓存数据的历史调用频率是否大于频率阈值72次/分。假设缓存数据在10点起到10:05分这个时间段内,历史调用频率分别为60、70、80、60、50,存在历史调用频率大于频率阈值的事件,因此判断存在高频调用事件。

可以理解的是,监控装置也可以根据调用频率的大小分为不同的调用频率等级,比如,将1分钟内调用频率位于区间[1,5]设为等级1;将1分钟内调用频率位于区间[6,10]设为等级2;将1分钟内调用频率位于区间[11,15]设为等级3,依次类推,其中,调用频率为正整数。一个时间单元内调用频率越大,调用频率等级越高,例如图2所示,图2为监控装置记录的某一项缓存数据的历史调用频率等级,图中每一点数据代表缓存数据在一个时间单元的调用频率等级,调度装置可以根据记录的缓存数据的历史调用频率等级,判断从当前时间起、预设个数的时间单元内缓存数据的调用频率等级是否大于设定的等级阈值,若大于设定的等级阈值,则确定存在高频调用事件;否则,确定不存在高频调用事件。其中,等级阈值可以根据历史调用频率等级或相关经验设定。

为了便于理解,比如历史调用频率等级记录某缓存数据的调用频率等级范围为等级1至等级5,则可以将等级4作为等级阈值,举例说明,一个时间单元可以设置为1分钟,当前时间为上午十点,预设10个时间单元,也就是说,调度装置需要判断未来十分钟内是否出现调用频率等级大于等级阈值4的情况,则调度装置可以通过历史调用频率等级记录的上午十点至十点十分这一时间段内的调用频率等级判断是否出现大于等级阈值4的情况,如果历史调用频率等级记录的上午十点至十点十分两个时间单元内的调用频率等级大于等级阈值4,则确定存在高频调用事件,执行步骤s103;如果历史调用频率等级记录的上午十点至十点十分内的调用频率等级不大于等级阈值4,则确定不存在高频调用事件,执行步骤s104。

在本申请实施例中,调度装置确定出缓存贮存时间到达的缓存数据,然后可以根据该缓存数据的历史调用频率,判断出在预设的时间段内该缓存数据是否会出现高频调用事件,再根据具体的判断情况进行相应的处理,从而使得调度装置可以及时处理一些缓存数据,减少对存储空间的占用,保证存储系统可以正常的使用。

s103,若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间。

在一些实施方式中,所述延长所述缓存数据的缓存贮存时间包括:

将所述缓存数据的缓存贮存时间延长预设个数的时间单元;或者,确定高频调用事件的发生时间,将所述缓存数据的缓存贮存时间延长至该高频调用事件发生时间之后。

在实际的应用中,调度装置可以根据缓存数据的实际调用情况,延长缓存贮存时间,一种可选的实现方式,可以将缓存数据的缓存贮存时间延长预设个数的时间单元,比如,当调度装置确定所述缓存数据将在未来2个时间单元出现高频调用事件时,则调度装置可以将缓存数据的缓存贮存时间延长2个时间单元;另一种可选的实现方式,调度装置可以确定高频调用事件发生时间,再将缓存数据的缓存贮存时间延长至该高频事件发生时间之后,比如,历史调用频率记录的在上午十点十分至十点二十时间单元内调用频率大于频率阈值9,则调度装置确定在上午十点十分至十点二十时间单元内会发生高频调用事件,则调度装置将缓存数据的缓存贮存时间延长至十点二十之后,当高频调用事件发生后,以便调度装置可以及时处理缓存贮存时间到达的缓存数据。

在本申请实施例中,当调度装置判断在预设时间段内该缓存数据的存在高频调用事件时,可以延长该缓存数据的缓存贮存时间,实现动态调整缓存贮存时间,当高频调用事件发生时,客户端可以直接从存储装置中调用该缓存数据,避免了传统技术中因时间固定带来的不灵活性,使得当缓存数据因超时被删除而在下一时刻又被调用时,不得不查询和调用数据库而引起的开销较大的问题。

s104,若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

当调度装置判断出在预设时间段内不存在高频调用事件,则将该缓存数据加入待失效缓存数据队列,以便调度装置可以及时删除失效队列中缓存数据,减少对存储空间的占用,保证缓存系统可以正常运行。

通过本申请实施例,当调度装置检测到满足预设的触发条件时,则确定缓存贮存时间到达的缓存数据,并根据缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件,若存在,延长缓存数据的缓存贮存时间,当高频调用事件发生时,客户端可以直接从存储装置中调用该缓存数据,而不需要查询数据库,从数据库中调用该缓存数据,减少查询开销,解决了超时时间固定带来的灵活性不强的问题;若不存在,则将缓存数据加入待失效缓存数据队列,以便调度装置可以及时清理缓存数据,减少存储空间的占用,使得缓存系统可以正常运行。

在实际应用中,可能会出现被加入失效缓存队列中的多个缓存数据查询的数据库地址是相同,当上述多个缓存数据同时从失效缓存队列中被删除时,造成缓存大面积失效,当客户端需要调用上述多个缓存数据时,需要查询同一数据库并从数据库中调用数据,这不仅增加调用开销,也会造成数据库压力剧增,导致缓存雪崩现象的发生。

为了避免上述情况的发生,本申请实施例提供了一种方法,在该方法中,调度装置根据失效缓存数据队列中缓存数据的地址判断是否存在具有相同来源的缓存数据大量失效,如果存在,则调度装置将部分或全部具有相同来源的缓存数据移除待失效缓存数据队列,避免了缓存大面积失效,具体参见图3,图3为本申请实施例的一种动态缓存数据失效调度方法的另一流程图,应用于调度装置,该方法包括:

s301,当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据。

s302,根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件。

s303,若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间,返回步骤s301。

s304,若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

s305,根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值。

其中,缓存数据的地址为缓存数据所查询的数据库的地址。客户端请求数据时,若缓存系统中不存在所请求数据,则查询数据库,从数据库中调用查询数据,客户端在调用数据的同时也可以将调用数据回写到存储装置中,并将获取该数据所查询的数据库地址也存储到存储装置中,以便调度装置根据存储的数据库地址判断失效缓存队列中是否存在大量具有相同来源的缓存数据。

可以理解的是,失效缓存数据队列中可能存在大量的具有相同数据库地址的缓存数据,调度装置可以根据存储装置中缓存数据所对应的数据库地址,统计失效缓存队列中具有相同数据库地址的缓存数据的失效量,并判断该失效量是否大于预选设定的数量阈值。为便于理解,比如调度装置统计失效缓存队列中数据库地址为x的缓存数据的失效量为10,即有10条待失效缓存数据所对应的数据库的地址相同,如果调度装置预先设定的数量阈值为8,则调度装置判定存在具有相同来源的缓存数据的失效数量大于设定数量阈值,执行步骤s306。

s306,若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

当调度装置判断出存在具有相同来源的缓存数据的失效数量大于设定数量阈值,则可以将部分或者全部具有相同数据库地址的缓存数据移除待失效缓存数据队列,避免因调度装置删除上述具有相同数据库地址的缓存数据,当客户端需要调用缓存数据时,需要查询和调用数据库中数据而造成的开销大的问题。

在一些实施方式中,所述将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列包括:在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;将所述查询开销符合设定条件的缓存数据移除。

需要说明的是,调度装置可以只移除部分满足查询开销设定条件的缓存数据,这样操作的目的是为了使得调度装置能够及时删除待失效队列中不满足查询开销设定条件的缓存数据,防止存储空间不足导致缓存系统不能正常运行问题发生。当然,如果在失效缓存队列中,具有相同来源的缓存数据都满足查询开销设定的条件,则调度装置可以将全部具有相同来源的缓存数据从待失效队列中移除出去。

在一些实施方式中,所述查询开销符合设定条件的缓存数据包括:查询开销大于设定开销阈值的缓存数据;或者,将缓存数据的查询开销由高低到低排序,将排在前n位的查询开销对应的缓存数据作为符合设定条件的缓存数据。

其中,查询开销可以通过以下方式确定:根据所述缓存数据的查询时间、查询复杂度、查询数据量中的一种或多种加权计算得到所述查询开销。

存储装置可以通过缓存数据的数据库查询时间、查询复杂度以及查询数据量加权计算得到缓存数据的查询开销。其中,存储装置以根据查询的缓存数据的类型为每个查询因子分配不同的权重,比如查询sql,则查询时间的权重值为w1,查询复杂度权重值为w2,查询数据量权重值为w3,如果查询sql的查询时间为p1,查询复杂度为p2,查询数据量为p3,则查询sql的查询开销为s1=w1*p1+w2*p2+w3*p3。

当存储装置确定出缓存数据的查询开销,调度装置可以判断该缓存数据的查询开销是否大于设定开销阈值,如果大于该开销阈值,则调度装置将该缓存数据移除待失效缓存队列。为了便于理解,调度装置确定的缓存数据的查询开销为s1,预先设定的开销阈值为s0,如果s1>s0,说明查询该缓存数据的开销较大,如果将其从待失效缓存队里中删除,当客户端需要调用该缓存数据时,需要花费较大的开销从数据库中调用该缓存数据,因此,当s1>s0时,将该缓存数据从失效缓存队列中移除,避免因调度装置将其删除后,当客户端需要调用该缓存数据时,带来较大的查询开销。

当然,调度装置可以将待失效缓存队列中缓存数据的查询开销由高到低进行排序,将排在前n位的查询开销对应的缓存数据作为符合设定条件的缓存数据,将排在前n位的缓存数据从失效缓存队列中移除,然后,调度装置可以将待失效队列中剩余的缓存数据可以及时删除,以便减少对存储空间的占用。

通过本申请实施例,调度装置可以根据失效缓存队列中缓存数据查询数据库的地址,判断当待失效缓存队列中存在多个具有相同来源的缓存数据时,将部分或者全部具有相同来源的缓存数据移除待失效缓存数据队列,避免来自同一数据库的缓存数据大量失效,给该数据库带来较大的查询压力。

为了便于本领域技术人员更清楚地理解本申请的实施方式,下面从整体对本申请实施例方法进行介绍。

参见图4,图4为本申请实施例提供的一种数据缓存方法的流程图,该方法应用于缓存系统,该缓存系统可以包括存储装置、监控装置和调度装置,该方法包括:

s401,存储装置存储缓存数据以及所述缓存数据的缓存贮存时间。

存储装置可以用于存储缓存数据的关键字key,数据value,数据地址(获取缓存数据所查询的数据库地址)、查询开销、缓存贮存时间,等等。其中,存储装置可以为数据库地址构建哈希索引,以便可以通过哈希索引的方式查找缓存数据。

当客户端请求数据时,首先向缓存发起请求,当存储装置中存储有所请求的数据时,则缓存系统直接将数据返回给客户端。当存储装置中未存储客户端所请求的数据时,则客户端查询数据库,数据库将查询结果返回给客户端,客户端在调用该数据的同时,也可以将该数据回写到存储装置中,以便当客户端再次需要调用该数据时,可以直接从缓存中调用,减小查询开销。

s402,监控装置记录所述缓存数据的调用数据,所述调用数据至少包括所述缓存数据的历史调用频率。

监控装置负责记录每个缓存数据在一个时间周期内的历史调用情况,以便调度装置可以根据历史调用频率判断出从当前时间起,预设数个的时间单元内是否会出现高频调用事件,如图2所示的缓存数据历史调用频率。

s403,调度装置用于当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

当缓存系统的存储空间不足时,或者预设的失效检查周期开始时,调度装置确定缓存贮存时间到达的缓存数据,并根据监控装置记录的缓存数据历史调用频率判断从当前时间起,预设数个的时间单元内是否会存在高频调用事件,若存在,则延长缓存数据的缓存贮存时间,以便当高频调用事件发生时,客户端可以直接从缓存中调用该缓存数据;若不存在,则将缓存数据加入待失效缓存数据队列,以便调度装置可以及时删除失效队列中的缓存数据,节省缓存空间,为存储其他更多的数据提供可能。

s404,调度装置根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

其中,所述将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列包括:在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;将所述查询开销符合设定条件的缓存数据移除。

为了便于理解,下面结合图5所示的缓存系统结构图对本申请实施例的数据缓存方法进行介绍,当缓存系统中不存在客户端所请求的数据时,则客户端发送请求给数据库,数据库将查询结果返回客户端,客户端接收到返回数据时,将该数据回写到缓存系统的存储装置中,如图5所示,存储装置为每项缓存数据建立相应的存储信息,可以包括数据库地址索引index、key、value、贮存时间t等信息,当客户端再次需要调用数据时,可以直接从缓存系统中调用。客户端每次调用存储装置中的数据时,监控装置会记录缓存数据的调用情况,比如调用频率。当失效检查周期开始时,调度装置确定存储装置中缓存贮存时间到达的缓存数据,并根据监控装置所记录的历史调用频率判断在预设的未来时间段内是否存在高频调用事件,如果是,则延长存储装置中缓存数据的缓存贮存时间;如果不存在,则将缓存贮存时间到达的缓存数据加入待失效缓存队列,调度装置将满足条件的待失效缓存数据失效。

通过本申请实施例提供的数据缓存方法,存储装置可以根据客户端的实际访问情况,存储数据,以便客户端再次需要调用数据时,可以直接调用存储装置中的数据;监控装置根据数据被调用的情况记录缓存数据的历史调用频率,以便调度装置可以根据缓存数据的历史调用频率,预测未来某时间段内缓存数据的调用频率,从而实现对缓存数据的缓存贮存时间进行动态调整,避免时间固定带来灵活性不强以及查询开销大的问题。另外,调度装置还可以将待失效缓存队列中具有相同来源的缓存数据移除待失效缓存数据队列,避免来自同一数据库的缓存数据大量失效,造成该数据库查询压力较大情况的发生。

为了使本申请的上述特征、优点更加明显易懂,下面结合图6对本申请进一步详细说明。参见图6,图6为本申请实施例提供的一种动态缓存数据失效调度方法再一流程图,该方法包括:

s601,存储装置缓存数据。

s602,监控装置根据客户端调用缓存数据的情况,记录缓存数据的历史调用频率。

s603,调度装置开始调度。

s604,调度装置判断失效检查周期是否开始,若是,执行步骤s605;若否,返回步骤s603。

s605,调度装置检查缓存贮存时间到达的缓存数据,并根据该缓存数据的历史调用频率,判断在预设的时间段内是否存在高频调用事件,如果存在,执行步骤s606;如果不存在,执行步骤s607。

s606,调度装置延长缓存数据的缓存贮存时间,返回步骤s603。

s607,调度装置将缓存数据加入待失效缓存数据队列。

s608,调度装置判断待失效缓存队列中具有相同来源的缓存数据如果同时失效是否存在大面积缓存失效,如果存在,执行步骤s609,;如果不存在,执行步骤s610.

s609,调度装置判断具有相同来源的缓存数据的查询开销是否大于设定开销阈值,如果是,则执行步骤s603;如果否,执行步骤s610。

s610,将小于设定开销阈值的缓存数据失效。

以上是本申请方法实施例,下面对本申请实施例提供的方法对应的系统进行介绍。参见图7,图7为本申请实施例提供的一种数据缓存系统示意图,该系统包括:

存储装置701,用于存储缓存数据以及所述缓存数据的缓存贮存时间。

监控装置702,用于记录所述缓存数据的调用数据,所述调用数据至少包括所述缓存数据的历史调用频率。

调度装置703,用于当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

调度装置703,还用于根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

需要说明的是,本申请实施例中各装置的具体实现可以参见图2-图6所示方法实施例而实现。

下面对本申请实施例提供的方法对应的设备进行介绍。

参见图8,为本申请实施例提供的一种调度装置示意图,所述装置800包括:

确定单元801,用于当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据。

判断单元802,用于根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件。

延长单元803,,用于若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间。

加入单元804,用于若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

需要说明的是,本申请实施例装置中各个单元的具体实现可以参见图2-图6所示方法实施例而实现,在此不再赘述。

参见图9,图9是本申请实施例提供的一种用于动态缓存数据失效调度装置的框图。包括:至少一个处理器901(例如cpu),存储器902和至少一个通信总线903,用于实现这些装置之间的连接通信。处理器901用于执行存储器902中存储的可执行模块,例如计算机程序。存储器902可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。

处理器901具体用于执行动态缓存数据失效调度的方法的操作,具体包括:

当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;

根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;

若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;

若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

在一些实施方式中,处理器901具体用于当确定缓存系统的存储空间不足时,确定满足预设的触发条件;或者,当预设的失效检查周期开始时,确定满足预设的触发条件。

在一些实施方式中,处理器901具体用于根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件包括:

根据缓存数据的历史调用频率,判断从当前时间起、预设个数的时间单元内,所述缓存数据的调用频率是否大于设定频率阈值;若所述缓存数据的调用频率大于设定频率阈值,确定存在高频调用事件;若所述缓存数据的调用频率不大于设定频率阈值,确定不存在高频调用事件。

在一些实施方式中,处理器901具体用于将所述缓存数据的缓存贮存时间延长预设个数的时间单元;或者,确定高频调用事件的发生时间,将所述缓存数据的缓存贮存时间延长至该高频调用事件发生时间之后。

在一些实施方式中,处理器901具体还用于执行以下操作指令:

根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

在一些实施方式中,处理器901具体用于在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;将所述查询开销符合设定条件的缓存数据移除。

在一些实施方式中,处理器901具体用于确定查询开销符合设定条件的缓存数据,具体包括:查询开销大于设定开销阈值的缓存数据;或者,将缓存数据的查询开销由高低到低排序,将排在前n位的查询开销对应的缓存数据作为符合设定条件的缓存数据。

在一些实施方式中,处理器901具体用于根据所述缓存数据的查询时间、查询复杂度、查询数据量中的一种或多种加权计算得到所述查询开销。

需要说明的是,本申请实施例装置中各个单元的具体实现可以参见图2-图6所示方法实施例而实现,在此不再赘述。

参见图10,是本申请实施例提供的一种用于数据缓存装置的框图。包括:至少一个处理器1001(例如cpu),存储器1002和至少一个通信总线1003,用于实现这些装置之间的连接通信。处理器1001用于执行存储器1002中存储的可执行模块,例如计算机程序。存储器1002可能包含高速随机存取存储器(ram:randomaccessmemory),也可能还包括非不稳定的存储器(non-volatilememory),例如至少一个磁盘存储器。

处理器1001具体用于执行一种数据缓存方法的操作,具体包括:

存储缓存数据以及所述缓存数据的缓存贮存时间;

记录所述缓存数据的调用数据,所述调用数据至少包括所述缓存数据的历史调用频率;

当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

在一些实施方式中,处理器1001具体还用于执行以下操作指令:

根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;

若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

在一些实施方式中,处理器1001具体用于将所述将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列包括:

在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;将所述查询开销符合设定条件的缓存数据移除。

需要说明的是,本申请实施例装置中各个单元的具体实现可以参见图2-图6所示方法实施例而实现,在此不再赘述。

在示例性实施例中,还提供了一种包括指令的非临时性计算机可读存储介质,例如包括指令的存储器,上述指令可由装置的处理器执行以完成上述方法。例如,所述非临时性计算机可读存储介质可以是rom、随机存取存储器(ram)、cd-rom、磁带、软盘和光数据存储装置等。

一种机器可读介质,例如该机器可读介质可以为非临时性计算机可读存储介质,当所述介质中的指令由装置(终端或者服务器)的处理器执行时,使得装置能够执行一种动态缓存数据失效调度方法,所述方法包括:

当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;

根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

在一些实施方式中,所述满足预设的触发条件包括:

当确定缓存系统的存储空间不足时,确定满足预设的触发条件;或者,当预设的失效检查周期开始时,确定满足预设的触发条件。

在一些实施方式中,所述根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件包括:

根据缓存数据的历史调用频率,判断从当前时间起、预设个数的时间单元内,所述缓存数据的调用频率是否大于设定频率阈值;若所述缓存数据的调用频率大于设定频率阈值,确定存在高频调用事件;若所述缓存数据的调用频率不大于设定频率阈值,确定不存在高频调用事件。

在一些实施方式中,所述延长所述缓存数据的缓存贮存时间包括:

将所述缓存数据的缓存贮存时间延长预设个数的时间单元;或者,确定高频调用事件的发生时间,将所述缓存数据的缓存贮存时间延长至该高频调用事件发生时间之后。

在一些实施方式中,所述方法还包括:

根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

在一些实施方式中,所述将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列包括:

在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;将所述查询开销符合设定条件的缓存数据移除。

在一些实施方式中,所述查询开销符合设定条件的缓存数据包括:

查询开销大于设定开销阈值的缓存数据;或者,将缓存数据的查询开销由高低到低排序,将排在前n位的查询开销对应的缓存数据作为符合设定条件的缓存数据。

在一些实施方式中,所述查询开销通过以下方式确定:

根据所述缓存数据的查询时间、查询复杂度、查询数据量中的一种或多种加权计算得到所述查询开销。

一种机器可读介质,例如该机器可读介质可以为非临时性计算机可读存储介质,当所述介质中的指令由装置(终端或者服务器)的处理器执行时,使得装置能够执行一种数据缓存方法,所述方法包括:

存储缓存数据以及所述缓存数据的缓存贮存时间;

记录所述缓存数据的调用数据,所述调用数据至少包括所述缓存数据的历史调用频率;

当满足预设的触发条件时,确定缓存贮存时间到达的缓存数据;根据所述缓存数据的历史调用频率,判断在预设时间段内是否存在高频调用事件;若判断在预设时间段内存在高频调用事件,延长所述缓存数据的缓存贮存时间;若判断在预设时间段内不存在高频调用事件,将所述缓存数据加入待失效缓存数据队列。

在一些实施方式中,所述方法还包括:

根据所述待失效缓存数据队列中的缓存数据的地址,判断是否存在具有相同来源的缓存数据的失效数量大于设定数量阈值;若存在具有相同来源的缓存数据的失效数量大于设定数量阈值,将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列。

在一些实施方式中,所述将部分或者全部具有相同来源的缓存数据移除所述待失效缓存数据队列包括:在具有相同来源的缓存数据中,确定查询开销符合设定条件的缓存数据;将所述查询开销符合设定条件的缓存数据移除。

本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本申请的其它实施方案。本申请旨在涵盖本申请的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本申请的一般性原理并包括本申请公开未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本申请的真正范围和精神由下面的权利要求指出。

应当理解的是,本申请并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本申请的范围仅由所附的权利要求来限制

需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者装置中还存在另外的相同要素。本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理装置来执行任务。在分布式计算环境中,程序模块可以位于包括存储装置在内的本地和远程计算机存储介质中。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

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