一种缓存数据控制方法及装置与流程

文档序号:12176250阅读:236来源:国知局
一种缓存数据控制方法及装置与流程

本申请涉及计算机应用技术领域,尤其涉及一种缓存数据控制方法及装置。



背景技术:

缓存是计算机应用技术领域中的一种常见技术,其基本思想是,在常规的数据存储区基础上,设置一种称为缓存的数据存储区,与常规数据存储区域相比,缓存的存储空间较小,但是具有更优的数据读写性能。由于在很多应用场景中,数据使用方所要使用的数据都是可以预测的,因此可以根据预测结果,提前将存储区域中数据的写入缓存,数据使用方优先从缓存中读取数据,从而提高数据使用方读取数据的速率。

然而,在实际应用中,存在一种“数据实时使用”的需求:即数据从一方生产之后,可能很快就要被另一方所使用,根据现有的数据缓存方案,需要先将数据写入性能较差的常规存储区域,然后才能写入缓存,这样往往导致缓存数据无法及时满足数据使用方的读取需求,不仅影响应用的整体数据读写效率,还会增加常规存储区域的读写负担。



技术实现要素:

针对上述技术问题,本申请提供一种缓存数据控制方法及装置,技术方案如下:

根据本申请的第一方面,提供一种缓存数据控制方法,与数据存储区域对应的缓存区域支持数据的直接写入机制和间接写入机制,所述方法包括:

判断缓存区域当前使用的数据写入机制;

在直接写入机制下,将数据生产方生产的数据直接写入缓存区域;

在间接写入机制下,将数据生产方生产的数据写入存储区域,在缓存区域满足预设写入条件的情况下,从存储区域读取数据、并将数据写入缓存区域。

根据本申请的第二方面,提供一种缓存数据控制装置,与数据存储区域对应的缓存区域支持数据的直接写入机制和间接写入机制,所述装置包括:

写入机制判断模块,用于判断缓存区域当前使用的数据写入机制;

直接写入控制模块,用于在直接写入机制下,将数据生产方生产的数据直接写入缓存区域;

间接写入控制模块,用于在间接写入机制下,将数据生产方生产的数据写入存储区域,在缓存区域满足预设写入条件的情况下,从存储区域读取数据、并将数据写入缓存区域。

本申请实施例所提供的技术方案,在现有数据缓存机制的基础上,增加一种直接写入机制,在这种写入机制下,数据可以不经过常规存储区域而直接写入缓存区域,从而满足数据使用方对数据实时性读取需求,进而提高应用的整体数据读写效率,降低常规存储区域的读写负担。

应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本申请。

附图说明

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

图1是本申请方案的运行架构示意图;

图2是本申请缓存数据控制方法的第一种流程示意图;

图3是本申请缓存数据控制方法的第二种流程示意图;

图4是本申请缓存数据控制方法的第三种流程示意图;

图5是本申请缓存数据控制装置的第一种结构示意图;

图6是本申请缓存数据控制装置的第二种结构示意图。

具体实施方式

为了使本领域技术人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行详细地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员所获得的所有其他实施例,都应当属于本申请保护的范围。

首先对本申请方案的运行系统架构进行说明。参见图1所示,本申请方案涉及的实体包括:数据生产方100,数据存储方200,数据使用方300。其中数据存储方200中包括常规存储区域200a和缓存区域200b。

需要说明的是,上述三种实体是基于逻辑功能进行划分,实际应用中,三者既可以位于不同的物理实体(例如不同的服务器设备),也可位于同一物理实体。

另外,本领域技术人员应该了解的是,“缓存”是一个相对于“常规数据存储”的概念,针对不同的场景,可能具有不同的具体含义,或对应不同的硬件资源。例如,CPU内置缓存、硬盘内置缓存等,均属于硬件本身自带资源,而数据库缓存、浏览器缓存等,则是软件在运行时需要操作系统为其分配一部分硬件资源(例如内存空间,或硬盘空间等)等作为缓存。本申请所提供的方案,是针对特定的数据应用需求提出,而并不需要对“缓存”实际对应的硬件资源进行限定。

图1所示系统的基本工作原理是:数据生产方100生产数据后,将数据写入数据存储方200,数据使用方300则从数据存储方200读取数据。理想的情况是:数据使用方300能够尽可能多地从缓存区域200b读取数据,从而提高数据的读取速率,并且减少数据使用方300与常规存储区域200a的交互,降低常规存储区域200a的读写负担。根据现有的数据缓存方案,需要先将数据写入常规 存储区域200a,然后才能写入缓存区域200b,这样在“数据实时使用”的应用需求下,就可能导致在数据使用方300需要数据的时候,数据还没有写入缓存区域200b,此时数据使用方300可以选择两种执行方式:a)继续等待数据写入缓存区域200b;b)直接到常规存储区域200a读取数据。但是无论哪种做法都会降低数据读取的速率,而且后一种做法还会增加常规存储区域200a的读写负担,并且造成缓存区域200b实际上的无效化。

针对以上问题,本申请所提供的方案是,为缓存区域提供两种数据写入机制:直接写入机制和间接写入机制。参见图2所示,相应的缓存数据控制方法可以包括以下步骤:

S101,判断缓存区域当前使用的数据写入机制;

S102,在直接写入机制下,将数据生产方生产的数据直接写入缓存区域;

S103,在间接写入机制下,将数据生产方生产的数据写入存储区域,在缓存区域满足预设写入条件的情况下,从存储区域读取数据、并将数据写入缓存区域。

上述方案中的“存储区域”即为与缓存区域相对应的常规存储区域。在本申请方案所提供的两种缓存数据写入机制中,间接写入机制与现有技术中的缓存数据写入机制基本类似,其中的“预设写入条件”,可以是时间触发条件,例如周期性执行写入操作;也可以是事件触发条件,例如缓存区域中的尚未被数据使用方读取的数量小于某个预设的阈值T1,则将存储区域中的数据写入缓存区域。以上两种方式均可以实现数据从存储空间到缓存空间的批量写入,从而有效降低存储空间的读写负担,在实际应用中,上述两种方式也可以结合使用。当然,就本申请方案而言,并不需要对从存储空间到缓存空间的数据写入条件进行限定。

直接写入机制则是针对“数据实时使用”的应用需求所提出,在数据使用方需要很快使用数据生产方数据的情况下,可以将数据直接写入缓存区域,而不必先经过常规存储区域,从而使得数据使用方能够及时从缓存区域读取到数据,这样既保证了应用的数据读取速率,又能够减少数据使用方直接到常规存 储区域读取数据的频率,从而降低常规存储区域的数据读写负担。

当然,在很多应用场景中,存储区域的意义还在于数据的持久化存储,以便后续再次使用,而且对于如数据库等使用易失性存储资源(内存)作为缓存空间的应用场景,还要考虑数据在意外关机等故障下的可恢复性,因此,作为本申请所提供的一种优选方案,在数据直接写入机制下,仍然可以将数据生产方生产的数据写入常规存储空间,如图3中的S104所示。可见,相对于间接写入机制中向存储空间写入数据的操作而言,在直接写入机制下,向存储空间写入数据与向缓存空间写入数据是两个相对独立的过程,后者并不会受前者的影响。

另外,由于缓存空间的容量是有限的,因此需要在适当的时机对缓存中的数据进行删除。一般而言,一条数据被使用方读取一次过后,就没有必要继续放在缓存中了,因此可以在缓存中的每条数据被读取后对其进行删除操作,也可以在缓存中已使用的数据量达到一定程度的时候,对这些数据进行批量删除操作。当然,在有些应用场景中,缓存中的数据可能需要被多次读取,例如存在多个数据使用方,这种情况下,也可以设定在数据被完全使用完毕后再进行删除。当然,具体的删除机制可以参考其他现有技术,本申请并不需要对其进行限定。

本申请所提供的两种缓存数据写入机制,可以由用户根据实际的使用需求进行手动切换。此外,本申请还进一步提供两种机制的自动切换方案,以更好地适应实际的应用需求。具体技术方案如下:

写入缓存区域中的数据(无论通过哪种方式写入),可以根据数据使用方对数据的读取情况分为已使用数据和未使用数据,在任意时刻,上述两种数据的在缓存中的数量都可能发生变化,而两种数据的变化情况可以体现当出数据的生产速率以及使用速率的相对变化趋势,因此可以基于这两种数据的变化情况来控制两种写入机制的自动切换,参见图4的S105及S106所示,在两种机制下的切换方法分别如下:

S105,在直接写入机制下,如果缓存区域中的未使用数据量大于预设阈值 T2,则将缓存区域使用的数据写入机制切换为间接写入机制。

直接写入机制原本是针对“数据实时使用”的需求提出,目的是使得数据生产后能够以较快的速率写入缓存,但是如果缓存区域中的未使用的数据量积压过多,意味着数据使用方当前对缓存内数据的读取速率已经明显小于写入速率,这种情况下,如果继续以较快的速率向缓存写入数据,可能很快会导致缓存溢出,而且写入缓存的数据也并不能发挥实际作用,为了避免这种情况发生,可以将写入机制切换为间接写入机制。

这里需要说明的是,在前面的实施例中,提供了一种可选的“将存储区域中的数据写入缓存区域”事件触发条件:如果缓存区域中的尚未被数据使用方读取的数量小于某个预设的阈值T1,则将存储区域中的数据写入缓存区域。可以理解的是,T1应该是一个不大于T2的值。

S106,在间接写入机制下,如果从存储区域读取并写入缓存区域的数据量小于预设阈值Tw,则将缓存区域使用的数据写入机制切换为直接写入机制。

在间接写入机制下,数据是根据预设条件从存储区域向缓存区域写入数据,相对于直接写入机制而言写入缓存的速率明显变慢,而如果单次或者单位时间内写入缓存的数据小于期望值,则意味着相对于缓存的存储空间而言,当前的数据生产速率较低,应在数据生产后尽快写入缓存以提高数据使用方的读取速率,并且降低数据使用方直接访问存储空间的频率,因此可以将写入机制切换为直接写入机制。

可以理解的是,如果上述两种切换机制同时生效,则能够根据当前数据生产速率及使用速率的实时变化情况,适应性地动态调整缓存数据写入机制,从而既达到生产方向使用方快速传递数据的目的,又避免在数据生产速率过快时所导致的缓存溢出问题。在首次执行本申请方案时,可以设置一个缓存数据写入机制的初始值,由于后续会根据实际情况动态调整,因此该初始值既可以是直接写入机制也可以是间接写入机制。每次执行S101的时机,既可以是周期性触发,也可以是事件触发,例如向缓存写入数据前或写入数据后执行、从缓存读取数据前或读取数据后执行,等等,或者多种触发方式结合使用,本领域技 术人员可以根据实际需求灵活选择。

当然,作为两种单向的切换机制,S105和S106所对应的方案也可以分别独立执行,即仅实现“半自动”的切换方案以适应某些特定的应用需求,本申请对此并不需要进行限定。

另外,可以理解的是,尽管图6中并未示出,S104所对应的步骤也可以结合在图6所示的方案中,从而实现相应的数据持久化存储目的。

相应于上述方法实施例,本申请还提供一种缓存数据控制装置,参见图5所示,该装置可以包括:

写入机制判断模块210,用于判断缓存区域当前使用的数据写入机制;

直接写入控制模块220,用于在直接写入机制下,将数据生产方生产的数据直接写入缓存区域;

间接写入控制模块230,用于在间接写入机制下,将数据生产方生产的数据写入存储区域,在缓存区域满足预设写入条件的情况下,从存储区域读取数据、并将数据写入缓存区域。

其中间接写入控制模块230所应用的“预设写入条件”,可以是时间触发条件,例如周期性执行写入操作;也可以是事件触发条件,例如缓存区域中的尚未被数据使用方读取的数量小于某个预设的阈值T1,则将存储区域中的数据写入缓存区域。以上两种方式均可以实现数据从存储空间到缓存空间的批量写入,从而有效降低存储空间的读写负担,在实际应用中,上述两种方式也可以结合使用。当然,就本申请方案而言,并不需要对从存储空间到缓存空间的数据写入条件进行限定。

在本申请的一种具体实施方式中,直接写入控制模块220还可以用于:在直接写入机制下,将数据生产方生产的数据写入存储区域。从而对数据机进行持久化存储,以便后续再次使用,而且对于如数据库等使用易失性存储资源(内存)作为缓存空间的应用场景,还要提供数据在意外关机等故障下的可恢复性。

参见图6所示,在本申请的一种具体实施方式中,缓存数据控制装置还可以进一步包括:

第一切换模块240,用于在直接写入机制下,如果缓存区域中的未使用数据量大于预设阈值T2,则将缓存区域使用的数据写入机制切换为间接写入机制。

第二切换模块250,用于在间接写入机制下,如果从存储区域读取并写入缓存区域的数据量小于预设阈值Tw,则将缓存区域使用的数据写入机制切换为直接写入机制。

根据图6所示,第一切换模块240和第二切换模块250同时配置在缓存数据控制装置中,根据实际需求,也可以仅在缓存数据控制装置中单独配置其中一种模块。

在本申请的一种具体实施方式中,直接写入控制模块220还可以用于:

在直接写入机制下,将数据生产方生产的数据写入存储区域。

上述装置中各个模块的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。

通过以上的实施方式的描述可知,本领域的技术人员可以清楚地了解到本申请可借助软件加必需的通用硬件平台的方式来实现。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本申请各个实施例或者实施例的某些部分所述的方法。

本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置实施例而言,由于其基本相似于方法实施例,所以描述得比较简单,相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,在实施本申请方案时可以把各模块的功能在同一个或多个软件和/或硬件中实现。也可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。

以上所述仅是本申请的具体实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本申请的保护范围。

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