缓存数据的持久化存储方法及装置与流程

文档序号:11917373阅读:347来源:国知局
缓存数据的持久化存储方法及装置与流程

本发明涉及通信技术领域,具体涉及一种缓存数据的持久化存储方法及装置。



背景技术:

目前,计算机在对获取的缓存数据进行存储时,一般都是将获取的缓存数据先存入CACHE(高速缓冲存储器),然后在通过CACHE将获取的缓存数据写入BASE(数据库)中,这一过程称为回刷。由于一般的缓存并不具有持久性,而数据库能够实现对数据的永久存储,因此通过上述回刷过程能够实现对缓存数据的永久存储。

但是,发明人在实现本发明的过程中发现现有技术中的上述方式至少存在下述缺陷:目前的缓存系统在回刷缓存数据时,都是按照缓存数据的写入时间进行回刷:先写入高速缓冲存储器的缓存数据先进行回刷,然后按照时间顺序依次回刷后写入的缓存数据。但是,由于缓存数据的重要性与缓存数据的写入时间并没有必然联系,因此,在上述过程中,一旦缓存系统出现故障,则会导致重要性高的缓存数据因排序靠后而丢失。由此可见,目前针对缓存数据的回刷策略不够灵活,容易导致重要数据的丢失。



技术实现要素:

鉴于上述问题,提出了本发明以便提供一种克服上述问题或者至少部分地解决上述问题的缓存数据的持久化存储方法及装置。

根据本发明的一个方面,提供了一种缓存数据的持久化存储方法,包括:分别确定缓存中的各个缓存数据的写入总次数;根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

可选地,所述预设的温度属性计算规则包括:将每个缓存数据的写入总次数作为该缓存数据的温度属性值。

可选地,所述预设的温度属性计算规则包括:预先将所述缓存对应的缓存时长进一步划分为多个缓存时段,为各个缓存时段分别设置对应的时段权重值;针对每个缓存数据,根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值。

可选地,所述根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值包括:分别确定该缓存数据在各个缓存时段内的写入次数;针对每个缓存时段,将该缓存数据在该缓存时段内的写入次数与该缓存时段的时段权重值的乘积作为该缓存数据在该缓存时段内的时段温度值;将该缓存数据在各个缓存时段内的时段温度值的总和作为该缓存数据的温度属性值。

可选地,所述缓存数据的持久化存储方法进一步包括:分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据;则所述分别确定该缓存数据在各个缓存时段内的写入次数包括:分别根据各个缓存时段对应的时段数据表确定该缓存数据在各个缓存时段内的写入次数。

可选地,所述分别确定缓存中的各个缓存数据的写入总次数的步骤具体包括:针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数。

根据本发明的另一方面,提供了一种缓存数据的持久化存储装置,包括:确定模块,适于分别确定缓存中的各个缓存数据的写入总次数;计算模块,适于根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;存储模块,适于按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

可选地,所述计算模块具体用于:将每个缓存数据的写入总次数作为该缓存数据的温度属性值。

可选地,所述计算模块具体用于:预先将所述缓存对应的缓存时长进一步划分为多个缓存时段,为各个缓存时段分别设置对应的时段权重值;确定单元,用于针对每个缓存数据,根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值。

可选地,所述计算模块进一步用于:分别确定该缓存数据在各个缓存时段内的写入次数;针对每个缓存时段,将该缓存数据在该缓存时段内的写入次数与该缓存时段的时段权重值的乘积作为该缓存数据在该缓存时段内的时段温度值;将该缓存数据在各个缓存时段内的时段温度值的总和作为该缓存数据的温度属性值。

可选地,所述缓存数据的持久化存储装置进一步包括:设置模块,适于分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据;则所述计算模块进一步用于:分别根据各个缓存时段对应的时段数据表确定该缓存数据在各个缓存时段内的写入次数。

可选地,所述确定模块具体用于:针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数。

在本发明提供的一种缓存数据的持久化存储方法及装置中,首先分别确定缓存中的各个缓存数据的写入总次数;然后根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;最后按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。由此可见,在本发明中,能够按照数据的温度属性确定回刷顺序,由于温度高的数据往往重要性也更高,因此,该种方式能够确保重要性高的缓存数据优先回刷,从而减少重要数据的丢失,同时提升了缓存数据回刷策略的灵活性。

上述说明仅是本发明技术方案的概述,为了能够更清楚了解本发明的技术手段,而可依照说明书的内容予以实施,并且为了让本发明的上述和其它目的、特征和优点能够更明显易懂,以下特举本发明的具体实施方式。

附图说明

通过阅读下文优选实施方式的详细描述,各种其他的优点和益处对于本领域普通技术人员将变得清楚明了。附图仅用于示出优选实施方式的目的,而并不认为是对本发明的限制。而且在整个附图中,用相同的参考符号表示相同的部件。在附图中:

图1示出了根据本发明实施例一提供的一种缓存数据的持久化存储方法的流程示意图;

图2示出了根据本发明实施例二提供的一种缓存数据的持久化存储方法的流程示意图;

图3示出了根据本发明实施例二提供的一种时段数据表示意图;

图4示出了根据本发明实施例三提供的一种缓存数据的持久化存储装置的结构框图;

图5示出了根据本发明实施例四提供的一种缓存数据的持久化存储装置的结构框图。

具体实施方式

下面将参照附图更详细地描述本公开的示例性实施例。虽然附图中显示了本公开的示例性实施例,然而应当理解,可以以各种形式实现本公开而不应被这里阐述的实施例所限制。相反,提供这些实施例是为了能够更透彻地理解本公开,并且能够将本公开的范围完整的传达给本领域的技术人员。

本发明提供了一种缓存数据的持久化存储方法及装置,至少能够解决现有技术中在对缓存数据进行回刷时,回刷策略不够灵活,不能按照缓存数据的重要性进行回刷的技术问题。

实施例一

图1示出了根据本发明实施例一提供的一种缓存数据的持久化存储方法的流程示意图。如图1所示,该方法包括以下步骤:

步骤S110:分别确定缓存中的各个缓存数据的写入总次数。

具体地,由于CACHE(高速缓冲存储器)具备存储速度快的优势,而BASE(数据库)则具备存储容量大的优势,因此,在通常情况下,先将数据写入CACHE中进行缓存,再将CACHE中的缓存数据持久化存储到数据库中。另外,除了利用高速缓冲存储器作为缓冲外,在本发明其他的实施例中,还可以利用内存、机械盘或SSD盘等各种存储介质作为缓存,本发明对此不做限定。

其中,缓存数据的写入包括直接写入和修改等各种类型的写操作。相应地,各个缓存数据的写入总次数为各个缓存数据被直接写入的总次数和各个缓存数据被修改的总次数之和。具体地,在分别确定缓存中的各个缓存数据的写入总次数时,具体为确定上述各个缓存数据被直接写入的总次数以及各个缓存数据被修改的总次数之和。并且,在确定缓存中的各个缓存数据的写入总次数时,可以预先设置一个累加器,对同一缓存数据的写入次数自动进行累加,以确定该缓存数据的写入总次数。除累加器的方式外,也可以采取其他各种方式确定各个缓存数据的写入总次数,例如,可以遍历缓存中的各个缓存数据,在遍历过程中,对相同的缓存数据的写入次数进行统计。总之,确定缓存中的各个缓存数据的写入总次数是为了后续步骤中能够根据各个缓存数据的写入总次数来计算各个缓存数据对应的温度属性值,因此,在这里,确定缓存中的各个缓存数据的写入总次数的具体方法可以由本领域技术人员根据实际情况进行设计,本发明对此不做限制。

步骤S120:根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值。

其中,预设的温度属性计算规则为本领域技术人员根据实际情况所设置的计算各个缓存数据的热门程度的规则。在这里,缓存数据的热门程度可以通过缓存数据被写入的总次数、和/或缓存数据的存储时段等因素进行确定。具体地,在计算各个缓存数据的温度属性值时,可以单独根据各个缓存数据的写入总次数计算各个缓存数据的温度属性值;也可以进一步结合其他因素计算各个缓存数据的温度属性值。本发明对温度属性值的具体计算规则不做限定,只要能够满足用户的实际需求即可。

步骤S130:按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

具体实施时,在计算出各个缓存数据的温度属性值之后,按照上述计算的温度属性值从高到低的顺序,将与各个温度属性值对应的缓存数据依次存储到数据库中,以实现对缓存数据的持久化存储。例如,当预设的持久化条件满足时,将缓存中的各个缓存数据按照温度属性值从高到低的顺序持久化存储到数据库中。其中,预设的持久化条件可由本领域技术人员根据需求灵活设定。

例如,在一种实现方式中,该持久化条件为:CACHE中已写入的数据达到预设比例。相应地,启动回刷策略,即通过CACHE将对应的缓存数据写入BASE中。在这里,通过CACHE将对应的缓存数据写入BASE的这一过程称为回刷。并且,在更细化的实现方式中,只有当CACHE中存储的脏数据的容量达到预设比例时,才会启动上述回刷策略。其中,在将缓存数据写入CACHE后,由于CACHE的存储容量不够大,因此CACHE中的部分数据会被写入BASE,因此,脏数据是指:已写入CACHE中但还没有写入BASE中的这一部分数据被称为脏数据。

又如,在另一种实现方式中,该持久化条件为:到达预定的持久化时间时,或距离上一次持久化的时间到达预设时间间隔时。具体的持久化时间以及预设时间间隔可由本领域技术人员灵活设定。

由此可见,在本发明提供的一种缓存数据的持久化存储方法中,首先分别确定缓存中的各个缓存数据的写入总次数;然后根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;最后按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。因此,在本发明中,能够按照数据的温度属性确定回刷顺序,由于温度高的数据往往重要性也更高,因此,该种方式能够确保重要性高的缓存数据优先回刷,从而减少重要数据的丢失,同时提升了缓存数据回刷策略的灵活性。

实施例二

图2示出了根据本发明实施例二提供的一种缓存数据的持久化存储方法流程示意图。如图2所示,该方法包括以下步骤:

步骤S210:针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数。

具体地,由于CACHE(高速缓冲存储器)具备存储速度快的优势,而BASE(数据库)则具备存储容量大的优势,因此,在通常情况下,先将数据写入CACHE中进行缓存,再将CACHE中的缓存数据持久化存储到数据库中。另外,除了利用高速缓冲存储器作为缓冲外,在本发明其他的实施例中,还可以利用内存、机械盘或SSD盘等各种存储介质作为缓存,本发明对此不做限定。

其中,缓存数据的写入包括直接写入和修改等各种类型的写操作。相应地,各个缓存数据的写入总次数包括各个缓存数据被直接写入的总次数以及各个缓存数据被修改的总次数。在查找缓存数据对应的键值的写入总次数时,具体为查找缓存数据对应的键值被直接写入CACHE的总次数以及在CACHE中被修改的总次数,并将上述二者相加求和,将上述得到的和值确定为该缓存数据的写入总次数。例如,若缓存数据中有K1、K2、K3一共3个键值,其中,在写入上述K1、K2、K3这3个缓存数据时,对应地K1被直接写入2次,修改1次;K2被直接写入5次,修改0次;K3被直接写入1次,修改1次;则K1、K2、K3的写入总次数分别为3(2+1=3)、5(5+0=5)、2(1+1=2)。在这里,要说明的是,缓存数据中存储的键值不仅仅包括上述单纯的键值(例如上述K1、K2、K3),还可以包括对应的键值操作,比如对K1的存储操作K1+1等。

在进行确定步骤时,可以设置一个累加器,将写入的相同缓存数据的写入次数自动进行累加,以确定缓存中的各个缓存数据的写入总次数;或者,也可以对缓存中的各个缓存数据进行统计,将相同的缓存数据的写入总次数统计出来,作为缓存中的各个缓存数据的写入总次数。总之,确定缓存中的各个缓存数据的写入总次数是为了后续步骤中能够根据各个缓存数据的写入总次数来计算各个缓存数据对应的温度属性值。因此,在这里,确定缓存中的各个缓存数据的写入总次数的具体方法可以由本领域技术人员根据实际情况进行设计,本发明对针对缓存数据的写入总次数的具体确定方法不做限制。

步骤S220:根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值。

具体地,在本实施例的一种实现方式中,预设的温度属性计算规则包括:将每个缓存数据的写入总次数作为该缓存数据的温度属性值。其中,每个缓存数据的写入总次数具体为步骤S210中确定的各个缓存数据的写入总次数。温度属性值为能够反映缓存数据的热门程度的一个属性数值。在这里,将缓存数据的写入总次数看作反映缓存数据的热门程度的属性数值,直接将每个缓存数据的写入总次数赋值给对应的缓存数据的温度属性值,以此来得到各个缓存数据的温度属性值。这一方法简单快速,是一种相对能够快速确定缓存数据的温度属性值的方法。

在本实施例的另一种实现方式中,预设的温度属性计算规则包括:预先将缓存对应的缓存时长进一步划分为多个缓存时段,为各个缓存时段分别设置对应的时段权重值;针对每个缓存数据,根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值。缓存时长可以为:由缓存中写入时间最早的数据所对应的第一数据写入时间和写入时间最晚的数据所对应的第二数据写入时间所界定的时间长度。而且,缓存时长也可以是预先设定的时间长度,例如,假设一个缓存专用于存储最近的三小时之内的缓存数据,一旦写入缓存的缓存数据的写入时间超过三小时则会自动删除,则该缓存的缓存时长为3小时。在将缓存时长划分为多个缓存时段时,可以将整个缓存时长划分为多个均等的缓存时段,也可以将整个缓存时长划分为多个不等的缓存时段。在这里,针对缓存时长的具体设置以及将缓存时长划分为多个缓存时段的具体划分方式可以由本领域技术人员根据实际情况进行设定,本发明对此不作限制。

为了便于根据缓存时段计算缓存数据的温度属性,在进行上述划分之后,可选地,还可以分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据。例如,若将缓存时长设置为3小时,并对应地将上述缓存时长均等地划分为第一缓存时段、第二缓存时段和第三缓存时段,其中,第一时段用于存储最近的一小时内的缓存数据,第二时段用于存储从最近的一小时至最近的两小时内的缓存数据,第三时段用于存储从最近的两小时至最近的三小时内的缓存数据,则分别为第一时段、第二时段和第三时段设置对应的表1、表2以及表3,则表1、表2以及表3即为上述与缓存时段对应的时段数据表。其中,上述表1、表2以及表3中都可以存储预设数量的缓存数据,并且,上述的表1、表2以及表3均可以根据需要扩展为多个子表。

为了便于根据缓存时段确定缓存数据的重要性,在本实施例中,还需要为上述划分的各个缓存时段设置对应的时段权重值,其设置方式也是多样的。具体地,可以将各个时段的权重值设置为均等的,这样更侧重于从各个缓存数据出现的次数这一方面去计算缓存数据的温度属性值,例如,若划分的缓存时段为现在时间、前1h、前2h,则可以将现在时间、前1h、前2h对应的缓存时段的时段权重值都设置为100;或者,也可以按照缓存时段在时间上从前往后的顺序对应地设置递增的(或递减的)时段权重值,这样侧重于将缓存数据的出现次数与写入时间进行结合来计算各个缓存的数据的温度属性值,例如,若划分的缓存时段为现在时间、前1h、前2h,则可以将现在时间对应的缓存时段的时段权重值设置为1000、前1h对应的缓存时段的时段权重值设置为500、前2h对应的缓存时段的时段权重值设置为200。在这里,各个时段的权重值设置由本领域技术人员根据实际情况而定,本发明对此不作限制。总之,通过缓存时段以及时段权重值的设置方式,使用户能够根据实际需求优先回刷重要时段内的数据,使回刷方案更为灵活。

在针对每个缓存数据,根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值时,具体地,首先分别确定该缓存数据在各个缓存时段内的写入次数。其中,上述写入次数为该缓存数据在各个缓存时段内被直接写入的次数以及被修改的次数之和,在确定上述写入次数时,分别根据各个缓存时段对应的时段数据表确定该缓存数据在各个缓存时段内的写入次数,其中,其确定方法与步骤S210中确定缓存数据的写入总次数的方法相同,此处不再赘述。然后根据上述确定的写入次数,针对每个缓存时段,将该缓存数据在该缓存时段内的写入次数与该缓存时段的时段权重值的乘积作为该缓存数据在该缓存时段内的时段温度值,然后将该缓存数据在各个缓存时段内的时段温度值的总和作为该缓存数据的温度属性值。具体实施中,例如,以上述例子为例,如图3所示,若划分的缓存时段的为现在时间、前1h、前2h,对应的写入列表的为表1、表2以及表3,其中,表1的权重设置为1000,表2的权重设置为500,表3的权重设置为200;在缓存数据中,若存在有K1、K2以及K3等数据;在写入数据时,现在时间写入了一个K1,两小时前还写入了一个K1,前1小时里面写入有两个K2,则在计算上述表中K1的时段温度值时,具体为:K1在前2h的时段温度值为200*1(K1在前2h,即表1的列表中出现的次数1),K1在前1h的时段温度值为500*0(K1在前1h,即表2的列表中出现的次数0),K1在现在时间的时段温度值为1000*1(K1在现在时间,即表3的列表中出现的次数1),则在计算K1的温度属性值时,其计算过程为:1000*1+500*0+200*1(K1在现在时间,前1h,前2h的列表中出现的次数分别是1,0,1);同样地,计算上述列表中K2等数据的温度属性值时,其计算过程相同,此处不再赘述。

步骤S230:按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

具体地,在计算出各个缓存数据的温度属性值之后,根据上述计算出的各个缓存数据的温度属性值设置缓存数据回刷顺序。即:将回刷顺序设置为按照上述计算的温度属性值从高到低的顺序,在进行回刷时,实现能够按照缓存数据的热门程度进行回刷的效果。并且,由于本方法能够针对缓存时长以及各个缓存时段进行灵活设置,因此通过本方法能够实现更加具有实时性、灵活性的回刷策略,例如可以根据实际情况设置优先回刷两个小时之前写入超过3次的数据,或者只关注3个小时内写入的缓存数据等。总之,本方法突破了目前的回刷策略完全根据写入时间决定回刷顺序的方案,能够实现更加灵活多变的回刷策略。

另外,本领域技术人员还可以对上述方案进行各种改动和变形。例如,在根据写入总次数确定温度属性时,除了直接根据写入总次数的数值进行确定外,还可以预先将写入总次数划分为多个数值区间,为各个数值区间分别设置对应的区间分值,并根据该区间分值确定温度属性值。例如,当写入总次数属于[0,10]这一数值区间时,区间分值为1;当写入总次数属于[10,50]这一数值区间时,区间分值为5;当写入总次数属于[50,100]这一数值区间时,区间分值为10。通过区间分值能够更加灵活地将写入总次数位于某一区间内的数据确定为热门数据。

由此可见,在本发明提供的一种缓存数据的持久化存储方法中,首先针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数;然后根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;最后按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。因此,在本发明中,能够按照数据的温度属性确定回刷顺序,由于温度高的数据往往重要性也更高,实现了一种更加具有灵活性和时效性的缓存数据回刷方案。并且,该种方式能够确保重要性高的缓存数据优先回刷,从而减少重要数据的丢失,提升了缓存数据回刷策略的灵活性。

实施例三

图4示出了根据本发明实施例三提供的一种缓存数据的持久化存储装置的结构框图。如图4所示,该装置包括:确定模块41、计算模块42以及存储模块43。

确定模块41适于分别确定缓存中的各个缓存数据的写入总次数。

具体地,由于CACHE(高速缓冲存储器)具备存储速度快的优势,而BASE(数据库)则具备存储容量大的优势,因此,在通常情况下,先将数据写入CACHE中进行缓存,再将CACHE中的缓存数据持久化存储到数据库中。另外,除了利用高速缓冲存储器作为缓冲外,在本发明其他的实施例中,还可以利用内存、机械盘或SSD盘等各种存储介质作为缓存,本发明对此不做限定。

其中,缓存数据的写入包括直接写入和修改等各种类型的写操作。相应地,各个缓存数据的写入总次数为各个缓存数据被直接写入的总次数和各个缓存数据被修改的总次数之和。具体地,确定模块41在分别确定缓存中的各个缓存数据的写入总次数时,具体为确定上述各个缓存数据被直接写入的总次数以及各个缓存数据被修改的总次数之和。并且,确定模块41在确定缓存中的各个缓存数据的写入总次数时,可以预先设置一个累加器,对同一缓存数据的写入次数自动进行累加,以确定该缓存数据的写入总次数。除累加器的方式外,也可以采取其他各种方式确定各个缓存数据的写入总次数,例如,可以遍历缓存中的各个缓存数据,在遍历过程中,对相同的缓存数据的写入次数进行统计。总之,确定缓存中的各个缓存数据的写入总次数是为了后续步骤中能够根据各个缓存数据的写入总次数来计算各个缓存数据对应的温度属性值,因此,在这里,确定缓存中的各个缓存数据的写入总次数的具体方法可以由本领域技术人员根据实际情况进行设计,本发明对此不做限制。

计算模块42适于根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值。

其中,预设的温度属性计算规则为本领域技术人员根据实际情况所设置的计算各个缓存数据的热门程度的规则。在这里,缓存数据的热门程度可以通过缓存数据被写入的总次数、和/或缓存数据的存储时段等因素进行确定。具体地,计算模块42在计算各个缓存数据的温度属性值时,可以单独根据各个缓存数据的写入总次数计算各个缓存数据的温度属性值;也可以进一步结合其他因素计算各个缓存数据的温度属性值。本发明对温度属性值的具体计算规则不做限定,只要能够满足用户的实际需求即可。

存储模块43适于按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

具体实施时,在计算出各个缓存数据的温度属性值之后,存储模块43按照上述计算的温度属性值从高到低的顺序,将与各个温度属性值对应的缓存数据依次存储到数据库中,以实现对缓存数据的持久化存储。例如,当预设的持久化条件满足时,将缓存中的各个缓存数据按照温度属性值从高到低的顺序持久化存储到数据库中。其中,预设的持久化条件可由本领域技术人员根据需求灵活设定。

例如,在一种实现方式中,该持久化条件为:CACHE中已写入的数据达到预设比例。相应地,启动回刷策略,即通过CACHE将对应的缓存数据写入BASE中。在这里,通过CACHE将对应的缓存数据写入BASE的这一过程称为回刷。并且,在更细化的实现方式中,只有当CACHE中存储的脏数据的容量达到预设比例时,才会启动上述回刷策略。其中,在将缓存数据写入CACHE后,由于CACHE的存储容量不够大,因此CACHE中的部分数据会被写入BASE,因此,脏数据是指:已写入CACHE中但还没有写入BASE中的这一部分数据被称为脏数据。

又如,在另一种实现方式中,该持久化条件为:到达预定的持久化时间时,或距离上一次持久化的时间到达预设时间间隔时。具体的持久化时间以及预设时间间隔可由本领域技术人员灵活设定。

由此可见,在本发明提供的一种缓存数据的持久化存储方法中,首先通过确定模块41分别确定缓存中的各个缓存数据的写入总次数;然后通过计算模块42根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;最后通过存储模块43按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。因此,在本发明中,能够按照数据的温度属性确定回刷顺序,由于温度高的数据往往重要性也更高,因此,该种方式能够确保重要性高的缓存数据优先回刷,从而减少重要数据的丢失,同时提升了缓存数据回刷策略的灵活性。

实施例四

图5示出了根据本发明实施例四提供的一种缓存数据的持久化存储装置的结构框图。如图5所示,该装置包括:确定模块51、计算模块52、存储模块53以及设置模块54。

确定模块51适于分别确定缓存中的各个缓存数据的写入总次数。

具体地,由于CACHE(高速缓冲存储器)具备存储速度快的优势,而BASE(数据库)则具备存储容量大的优势,因此,在通常情况下,先将数据写入CACHE中进行缓存,再将CACHE中的缓存数据持久化存储到数据库中。另外,除了利用高速缓冲存储器作为缓冲外,在本发明其他的实施例中,还可以利用内存、机械盘或SSD盘等各种存储介质作为缓存,本发明对此不做限定。

具体地,确定模块51针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数。其中,缓存数据的写入包括直接写入和修改等各种类型的写操作。相应地,各个缓存数据的写入总次数包括各个缓存数据被直接写入的总次数以及各个缓存数据被修改的总次数。确定模块51在查找缓存数据对应的键值的写入总次数时,具体为查找缓存数据对应的键值被直接写入CACHE的总次数以及在CACHE中被修改的总次数,并将上述二者相加求和,将上述得到的和值确定为该缓存数据的写入总次数。在这里,要说明的是,缓存数据中存储的键值不仅仅包括上述单纯的键值(例如上述K1、K2、K3),还可以包括对应的键值操作,比如对K1的存储操作K1+1等。

确定模块51在进行确定步骤时,可以设置一个累加器,通过将写入的相同缓存数据的写入次数自动进行累加来确定缓存中的各个缓存数据的写入总次数;或者,也可以对缓存中的各个缓存数据进行统计,将相同的缓存数据的写入总次数统计出来,作为缓存中的各个缓存数据的写入总次数。总之,确定缓存中的各个缓存数据的写入总次数是为了后续步骤中能够根据各个缓存数据的写入总次数来计算各个缓存数据对应的温度属性值。因此,在这里,确定缓存中的各个缓存数据的写入总次数的具体方法可以由本领域技术人员根据实际情况进行设计,本发明对针对缓存数据的写入总次数的具体确定方法不做限制。

计算模块52适于根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值。

具体地,在一种实现方式中,计算模块52将每个缓存数据的写入总次数作为该缓存数据的温度属性值。其中,每个缓存数据的写入总次数具体为确定模块51中确定的各个缓存数据的写入总次数。温度属性值为能够反映缓存数据的热门程度的一个属性数值。在这里,计算模块52将缓存数据的写入总次数看作反映缓存数据的热门程度的属性数值,直接将每个缓存数据的写入总次数赋值给对应的缓存数据的温度属性值,以此来得到各个缓存数据的温度属性值。这一方法简单快速,是一种相对能够快速确定缓存数据的温度属性值的方法。

在另一种实现方式中,计算模块52预先将缓存对应的缓存时长进一步划分为多个缓存时段,为各个缓存时段分别设置对应的时段权重值。其中,缓存时长可以为:由缓存中写入时间最早的数据所对应的第一数据写入时间和写入时间最晚的数据所对应的第二数据写入时间所界定的时间长度。而且,缓存时长也可以是预先设定的时间长度,例如,假设一个缓存专用于存储最近的三小时之内的缓存数据,一旦写入缓存的缓存数据的写入时间超过三小时则会自动删除,则该缓存的缓存时长为3小时。计算模块52在将缓存时长划分为多个缓存时段时,可以将整个缓存时长划分为多个均等的缓存时段,也可以将整个缓存时长划分为多个不等的缓存时段。在这里,针对缓存时长的具体设置以及将缓存时长划分为多个缓存时段的具体划分方式可以由本领域技术人员根据实际情况进行设定,本发明对此不作限制。在本实施例中,计算模块52还需要为上述划分的各个缓存时段设置对应的时段权重值,其设置方式也是多样的。具体地,计算模块52可以将各个时段的权重值设置为均等的,这样更侧重于从各个缓存数据出现的次数这一方面去计算缓存数据的温度属性值,例如,若划分的缓存时段为现在时间、前1h、前2h,则可以将现在时间、前1h、前2h对应的缓存时段的时段权重值都设置为100;或者,计算模块52也可以按照缓存时段在时间上从前往后的顺序对应地设置递增的(或递减的)时段权重值,这样侧重于将缓存数据的出现次数与写入时间进行结合来计算各个缓存的数据的温度属性值,例如,若划分的缓存时段为现在时间、前1h、前2h,则可以将现在时间对应的缓存时段的时段权重值设置为1000、前1h对应的缓存时段的时段权重值设置为500、前2h对应的缓存时段的时段权重值设置为200。在这里,各个时段的权重值设置由本领域技术人员根据实际情况而定,本发明对此不作限制。总之,通过缓存时段以及时段权重值的设置方式,使用户能够根据实际需求优先回刷重要时段内的数据,使回刷方案更为灵活。最后,计算模块52针对每个缓存数据,根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值。具体地,首先,计算模块52分别确定该缓存数据在各个缓存时段内的写入次数。其中,上述写入次数为该缓存数据在各个缓存时段内被直接写入的次数以及被修改的次数之和,计算模块52在确定上述写入次数时,分别根据各个缓存时段对应的时段数据表确定该缓存数据在各个缓存时段内的写入次数,其中,其确定方法与确定模块51中确定缓存数据的写入总次数的方法相同,此处不再赘述。然后,计算模块52针对每个缓存时段,将该缓存数据在该缓存时段内的写入次数与该缓存时段的时段权重值的乘积作为该缓存数据在该缓存时段内的时段温度值。具体地,计算模块52在计算缓存时段内的时段温度值时,将该缓存数据在该缓存时段内的写入次数与该缓存时段的时段权重值的乘积作为该缓存数据在该缓存时段内的时段温度值。最后,计算模块52将该缓存数据在各个缓存时段内的时段温度值的总和作为该缓存数据的温度属性值。

存储模块53适于按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

具体地,在计算出各个缓存数据的温度属性值之后,存储模块53根据上述计算出的各个缓存数据的温度属性值设置缓存数据回刷顺序。即:将回刷顺序设置为按照上述计算的温度属性值从高到低的顺序,在进行回刷时,实现能够按照缓存数据的热门程度进行回刷的效果。并且,由于本装置能够针对缓存时长以及各个缓存时段进行灵活设置,因此通过本装置能够实现更加具有实时性、灵活性的回刷策略,例如可以根据实际情况设置优先回刷两个小时之前写入超过3次的数据,或者只关注3个小时内写入的缓存数据等。

设置模块54适于分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据。

具体地,为了便于根据缓存时段计算缓存数据的温度属性,在计算模块52将缓存对应的缓存时长进一步划分为多个缓存时段之后,可选地,还可以通过设置模块54分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据。例如,若将缓存时长设置为3小时,并对应地将上述缓存时长均等地划分为第一缓存时段、第二缓存时段和第三缓存时段,其中,第一时段用于存储最近的一小时内的缓存数据,第二时段用于存储从最近的一小时至最近的两小时内的缓存数据,第三时段用于存储从最近的两小时至最近的三小时内的缓存数据,则分别为第一时段、第二时段和第三时段设置对应的表1、表2以及表3,则表1、表2以及表3即为上述与缓存时段对应的时段数据表。其中,上述表1、表2以及表3中都可以存储预设数量的缓存数据,并且,上述的表1、表2以及表3均可以根据需要扩展为多个子表。

上述各个模块的具体结构和工作原理可参照方法实施例中相应步骤的描述,此处不再赘述。

由此可见,在本发明提供的一种缓存数据的持久化存储装置中,首先通过确定模块51针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数;然后通过计算模块52来实现根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值,在此过程中,进一步通过设置模块54分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据。最后通过存储模块53按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。因此,在本发明中,能够按照数据的温度属性确定回刷顺序,由于温度高的数据往往重要性也更高,实现了一种更加具有灵活性和时效性的缓存数据回刷方案。并且,该种方式能够确保重要性高的缓存数据优先回刷,从而减少重要数据的丢失,提升了缓存数据回刷策略的灵活性。

在此提供的算法和显示不与任何特定计算机、虚拟系统或者其它设备固有相关。各种通用系统也可以与基于在此的示教一起使用。根据上面的描述,构造这类系统所要求的结构是显而易见的。此外,本发明也不针对任何特定编程语言。应当明白,可以利用各种编程语言实现在此描述的本发明的内容,并且上面对特定语言所做的描述是为了披露本发明的最佳实施方式。

在此处所提供的说明书中,说明了大量具体细节。然而,能够理解,本发明的实施例可以在没有这些具体细节的情况下实践。在一些实例中,并未详细示出公知的方法、结构和技术,以便不模糊对本说明书的理解。

类似地,应当理解,为了精简本公开并帮助理解各个发明方面中的一个或多个,在上面对本发明的示例性实施例的描述中,本发明的各个特征有时被一起分组到单个实施例、图、或者对其的描述中。然而,并不应将该公开的方法解释成反映如下意图:即所要求保护的本发明要求比在每个权利要求中所明确记载的特征更多的特征。更确切地说,如下面的权利要求书所反映的那样,发明方面在于少于前面公开的单个实施例的所有特征。因此,遵循具体实施方式的权利要求书由此明确地并入该具体实施方式,其中每个权利要求本身都作为本发明的单独实施例。

本领域那些技术人员可以理解,可以对实施例中的设备中的模块进行自适应性地改变并且把它们设置在与该实施例不同的一个或多个设备中。可以把实施例中的模块或单元或组件组合成一个模块或单元或组件,以及此外可以把它们分成多个子模块或子单元或子组件。除了这样的特征和/或过程或者单元中的至少一些是相互排斥之外,可以采用任何组合对本说明书(包括伴随的权利要求、摘要和附图)中公开的所有特征以及如此公开的任何方法或者设备的所有过程或单元进行组合。除非另外明确陈述,本说明书(包括伴随的权利要求、摘要和附图)中公开的每个特征可以由提供相同、等同或相似目的的替代特征来代替。

此外,本领域的技术人员能够理解,尽管在此所述的一些实施例包括其它实施例中所包括的某些特征而不是其它特征,但是不同实施例的特征的组合意味着处于本发明的范围之内并且形成不同的实施例。例如,在下面的权利要求书中,所要求保护的实施例的任意之一都可以以任意的组合方式来使用。

本发明的各个部件实施例可以以硬件实现,或者以在一个或者多个处理器上运行的软件模块实现,或者以它们的组合实现。本领域的技术人员应当理解,可以在实践中使用微处理器或者数字信号处理器(DSP)来实现根据本发明实施例的缓存数据的持久化存储装置模块中的一些或者全部部件的一些或者全部功能。本发明还可以实现为用于执行这里所描述的方法的一部分或者全部的设备或者装置程序(例如,计算机程序和计算机程序产品)。这样的实现本发明的程序可以存储在计算机可读介质上,或者可以具有一个或者多个信号的形式。这样的信号可以从因特网网站上下载得到,或者在载体信号上提供,或者以任何其他形式提供。

应该注意的是上述实施例对本发明进行说明而不是对本发明进行限制,并且本领域技术人员在不脱离所附权利要求的范围的情况下可设计出替换实施例。在权利要求中,不应将位于括号之间的任何参考符号构造成对权利要求的限制。单词“包含”不排除存在未列在权利要求中的元件或步骤。位于元件之前的单词“一”或“一个”不排除存在多个这样的元件。本发明可以借助于包括有若干不同元件的硬件以及借助于适当编程的计算机来实现。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。单词第一、第二、以及第三等的使用不表示任何顺序。可将这些单词解释为名称。

本发明公开了:A1、一种缓存数据的持久化存储方法,包括:

分别确定缓存中的各个缓存数据的写入总次数;

根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;

按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

A2、根据A1所述的方法,其中,所述预设的温度属性计算规则包括:将每个缓存数据的写入总次数作为该缓存数据的温度属性值。

A3、根据A1所述的方法,其中,所述预设的温度属性计算规则包括:

预先将所述缓存对应的缓存时长进一步划分为多个缓存时段,为各个缓存时段分别设置对应的时段权重值;

针对每个缓存数据,根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值。

A4、根据A3所述的方法,其中,所述根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值包括:

分别确定该缓存数据在各个缓存时段内的写入次数;

针对每个缓存时段,将该缓存数据在该缓存时段内的写入次数与该缓存时段的时段权重值的乘积作为该缓存数据在该缓存时段内的时段温度值;

将该缓存数据在各个缓存时段内的时段温度值的总和作为该缓存数据的温度属性值。

A5、根据A4所述的方法,其中,进一步包括:分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据;

则所述分别确定该缓存数据在各个缓存时段内的写入次数包括:分别根据各个缓存时段对应的时段数据表确定该缓存数据在各个缓存时段内的写入次数。

A6、根据A1-A5任一所述的方法,其中,所述分别确定缓存中的各个缓存数据的写入总次数的步骤具体包括:针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数。

本发明还公开了:B7、一种缓存数据的持久化存储装置,包括:

确定模块,适于分别确定缓存中的各个缓存数据的写入总次数;

计算模块,适于根据各个缓存数据的写入总次数以及预设的温度属性计算规则,计算各个缓存数据的温度属性值;

存储模块,适于按照温度属性值从高到低的顺序,将各个缓存数据依次持久化存储到数据库中。

B8、根据B7所述的装置,其中,所述计算模块具体用于:将每个缓存数据的写入总次数作为该缓存数据的温度属性值。

B9、根据B7所述的装置,其中,所述计算模块具体用于:预先将所述缓存对应的缓存时长进一步划分为多个缓存时段,为各个缓存时段分别设置对应的时段权重值;

针对每个缓存数据,根据该缓存数据各次写入时对应的缓存时段的时段权重值确定该缓存数据的温度属性值。

B10、根据B9所述的装置,其中,所述计算模块进一步用于:

分别确定该缓存数据在各个缓存时段内的写入次数;

针对每个缓存时段,将该缓存数据在该缓存时段内的写入次数与该缓存时段的时段权重值的乘积作为该缓存数据在该缓存时段内的时段温度值;

将该缓存数据在各个缓存时段内的时段温度值的总和作为该缓存数据的温度属性值。

B11、根据B10所述的装置,其中,进一步包括:设置模块,适于分别针对每个缓存时段设置与该缓存时段对应的时段数据表,其中,各个时段数据表用于记录相应的缓存时段内写入的缓存数据;

则所述计算模块进一步用于:分别根据各个缓存时段对应的时段数据表确定该缓存数据在各个缓存时段内的写入次数。

B12、根据B7-B11任一所述的装置,其中,所述确定模块具体用于:针对每个缓存数据,查找该缓存数据对应的键值的写入总次数,将该缓存数据对应的键值的写入总次数确定为该缓存数据的写入总次数。

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