一种缓存数据处理方法及装置转让专利

申请号 : CN201510654678.6

文献号 : CN105335102B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : 荆帅帅

申请人 : 浪潮(北京)电子信息产业有限公司

摘要 :

本发明提供一种缓存数据处理方法及装置,上述方法包括以下步骤:获取数据块特征值并与预设阈值进行比较并根据比较结果,对数据块进行处理;根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略;实现了在缓存数据运行时,由访问频率自行决定生存时间,使得缓存数据的生存时间更加合理,不经常访问的数据调出缓存,节省空间;经常访问的数据常驻缓存,提高命中率,从而加快访问速度,提高访问效率。

权利要求 :

1.一种缓存数据处理方法,其特征在于,包括以下步骤:

获取数据块特征值并与预设阈值进行比较,所述数据块特征值是指数据块大小值;

若数据块大小值小于预设阈值,则将数据块存至预设内存数据库,形成第一缓存数据,并设定所述第一缓存数据的第一生存时间阈值;

若数据块大小值大于或等于预设阈值,则对数据块增加1字节空间用于对数据访问次数进行记录,并将增加字节后的数据块存入预设内存库,形成第二缓存数据并对所述第二缓存数据设定第二生存时间阈值;

其中,所述第一生存时间阈值根据历史数据访问记录的平均间隔而定;所述第二生存时间阈值是所述第一生存时间阈值的大于等于2的整数倍;

根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略。

2.根据权利要求1所述的方法,其特征在于,若数据块大小值小于预设阈值,则将数据块存至预设内存数据库,形成第一缓存数据,并设定所述第一缓存数据的第一生存时间阈值的过程为:若数据块大小值小于预设阈值,则将数据块存至预设内存数据库,形成第一缓存数据,采用设置时间命令,对所述第一缓存数据进行第一生存时间阈值设定。

3.根据权利要求1所述的方法,其特征在于,对于数据块大小值大于或等于预设阈值,对数据块增加1字节空间用于记录数据访问次数,并将初始访问次数,置为0。

4.根据权利要求2或3所述的方法,其特征在于,根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略的过程为:若在第一生存时间阈值内,所述第一缓存数据被访问,则将所述第一缓存数据的生存时间重新置为第一生存时间阈值;若第一生存时间阈值到达时,所述第一缓存数据未被访问,则将所述第一缓存数据删除;

每访问第二缓存数据1次,则访问次数加1,若在第二生存时间阈值内,访问次数大于或等于预设最大次数,则将所述第二缓存数据的生存时间重新置为第二生存时间阈值且将访问次数重新置为0。

5.根据权利要求4所述的方法,其特征在于,每访问第二缓存数据1次,则访问次数加1,若在第二生存时间阈值内访问次数小于预设最大次数,则将所述第二缓存数据删除。

6.根据权利要求1或2所述的方法,其特征在于,所述预设内存数据库是指Redis内存数据库。

7.一种缓存数据处理装置,其特征在于,包括获取模块、比较处理模块、缓存数据处理模块;其中,所述获取模块通过所述比较处理模块与所述缓存数据处理模块相连;

所述获取模块,用于获取数据块特征值并将所述数据块特征值发送至所述比较处理模块,所述数据块特征值是指数据块大小值;

所述比较处理模块,用于将数据块特征值与预设阈值进行比较;若数据块大小值小于预设阈值,则将数据块存至预设内存数据库,形成第一缓存数据,并设定所述第一缓存数据的第一生存时间阈值;若数据块大小值大于或等于预设阈值,则对数据块增加1字节空间用于对数据访问次数进行记录,并将增加字节后的数据块存入预设内存库,形成第二缓存数据并对所述第二缓存数据设定第二生存时间阈值;

其中,所述第一生存时间阈值根据历史数据访问记录的平均间隔而定;所述第二生存时间阈值是所述第一生存时间阈值的大于等于2的整数倍;所述缓存数据处理模块,用于根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略。

说明书 :

一种缓存数据处理方法及装置

技术领域

[0001] 本发明涉及缓存数据管理领域,尤其涉及一种缓存数据处理方法及装置。

背景技术

[0002] Redis出现之前,数据都直接缓存至内存;缓存数据替换、缓存数据清除等操作都需要用户程序自己管理即通过专门的缓存管理模块对缓存数据进行管理,处理起来比较麻烦,严重影响了用户体验。
[0003] 随着具有强大数据管理功能的Redis出现,使得对缓存数据管理能力得到了提高,其优越性能、高速读取速度越来越受到各种应用程序青睐,多数传统数据库访问程序,也把Redis作为缓存端提高数据访问效率。
[0004] 然而Redis作为内存数据库,其容量不能达到传统数据库的容量,因此如何在有限空间内,尽可能提高数据命中率来提高数据访问效率,是亟需解决的技术问题。

发明内容

[0005] 本发明提供一种缓存数据处理方法及装置,以解决上述问题。
[0006] 本发明提供一种缓存数据处理方法。上述方法包括以下步骤:
[0007] 获取数据块特征值并与预设阈值进行比较并根据比较结果,对数据块进行处理;
[0008] 根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略。
[0009] 本发明还提供一种缓存数据处理装置,包括获取模块、比较处理模块、缓存数据处理模块;其中,所述获取模块通过所述比较处理模块与所述缓存数据处理模块相连;
[0010] 所述获取模块,用于获取数据块特征值并将所述数据块特征值发送至所述比较处理模块;
[0011] 所述比较处理模块,用于将数据块特征值与预设阈值进行比较并根据比较结果,对数据块进行处理并将处理结果发送至所述缓存数据处理模块;
[0012] 所述缓存数据处理模块,用于根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略。
[0013] 通过以下方案:获取数据块特征值并与预设阈值进行比较并根据比较结果,对数据块进行处理;根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略;实现了在缓存数据运行时,由访问频率自行决定生存时间,使得缓存数据的生存时间更加合理,不经常访问的数据调出缓存,节省空间;经常访问的数据常驻缓存,提高命中率,从而加快访问速度,提高访问效率。
[0014] 通过以下方案:若在第一生存时间阈值内,所述第一缓存数据被访问,则将所述第一缓存数据的生存时间重新置为第一生存时间阈值;若第一生存时间阈值到达时,所述第一缓存数据未被访问,则将所述第一缓存数据删除;采用上述方案使得对于访问比较频繁的第一缓存数据,由于访问频率高,在第一生存时间阈值到达前被访问,而不至于被清除;对于访问频率低的第一缓存数据,则会因为第一生存时间阈值到达时尚未被访问而被自动清除;采用上述方案使得对于突发性访问频率增加的数据更加有效,提高了访问效率,大大提高了用户体验。

附图说明

[0015] 此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
[0016] 图1所示为本发明实施例1的缓存数据处理方法流程图;
[0017] 图2所示为本发明实施例2的缓存数据处理装置结构图。

具体实施方式

[0018] 下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。
[0019] 图1所示为本发明实施例1的缓存数据处理方法流程图,包括以下步骤:
[0020] 步骤101:获取数据块特征值并与预设阈值进行比较并根据比较结果,对数据块进行处理;
[0021] 其中,预设阈值根据实际情况可以灵活设定,例如:512B,在此不用于限定本实施例保护范围;数据块特征值是指数据块大小值。
[0022] 进一步地,获取数据块特征值并与预设阈值进行比较并根据比较结果,对数据块进行处理的过程为:
[0023] 若数据块大小值小于预设阈值,则将数据块存至预设内存数据库,形成第一缓存数据,并设定所述第一缓存数据的第一生存时间阈值。
[0024] 进一步地,若数据块大小值小于预设阈值,则将数据块存至预设内存数据库,形成第一缓存数据,并设定所述第一缓存数据的第一生存时间阈值的过程为:
[0025] 若数据块大小值小于预设阈值,则将数据块存至预设内存数据库,形成第一缓存数据,采用设置时间命令,对所述第一缓存数据进行第一生存时间阈值设定。
[0026] 其中,根据自身程序的本身环境(因为环境不同,不能统一而定,比如:有的网站平均访问率高,平均1秒就有一人访问,有的网站可能10秒才有人访问一次),自身程序历史访问记录的平均间隔,设定第一生存时间阈值(T1)。
[0027] 进一步地,获取数据块特征值并与预设阈值进行比较并根据比较结果,对数据块进行处理的过程为:
[0028] 若数据块大小值大于或等于预设阈值,则对数据块增加1字节空间用于对数据访问次数进行记录,并将增加字节后的数据块存入预设内存库,形成第二缓存数据并对所述第二缓存数据设定第二生存时间阈值。
[0029] 其中,所述预设内存数据库是指Redis内存数据库。
[0030] 其中,对于数据块大小值大于或等于预设阈值,对数据块增加1字节空间用于记录数据访问次数,并将初始访问次数,置为0。
[0031] 其中,第二生存时间阈值为第一生存时间阈值的整数倍,例如:2倍第一生存时间阈值(2T)、3倍第一生存时间阈值(3T)、4倍第一生存时间阈值(4T)、5倍第一生存时间阈值(5T)、6倍第一生存时间阈值(6T)、7倍第一生存时间阈值(7T)、8倍第一生存时间阈值(8T)。
[0032] 步骤102:根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略。
[0033] 进一步地,根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略的过程为:
[0034] 若在第一生存时间阈值内,所述第一缓存数据被访问,则将所述第一缓存数据的生存时间重新置为第一生存时间阈值;若第一生存时间阈值到达时,所述第一缓存数据未被访问,则将所述第一缓存数据删除。
[0035] 采用上述方案使得对于访问比较频繁的第一缓存数据,由于访问频率高,在第一生存时间阈值到达前被访问,而不至于被清除;对于访问频率低的第一缓存数据,则会因为第一生存时间阈值到达时尚未被访问而被自动清除。
[0036] 采用上述方案使得对于突发性访问频率增加的数据更加有效,比如:可能数据访问突发性比较高,在访问高峰期数据会一直不断缓存在Redis内存数据库,而访问低谷期则会被清除,并不会长期存储,节省了Redis内存数据库空间。
[0037] 进一步地,根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略的过程为:
[0038] 每访问第二缓存数据1次,则访问次数加1,若在第二生存时间阈值内,访问次数大于或等于预设最大次数,则将所述第二缓存数据的生存时间重新置为第二生存时间阈值且将访问次数重新置为0。
[0039] 进一步地,根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略的过程为:
[0040] 每访问第二缓存数据1次,则访问次数加1,若在第二生存时间阈值内访问次数小于预设最大次数,则将所述第二缓存数据删除。
[0041] 对于大于或等于预设阈值的数据块附加1个字节空间进行数据访问次数统计的思路,具有以下特点:
[0042] 1、由于数据块本身比较大,增加1个字节空间不会造成太大空间浪费。
[0043] 2、这一字节却在防止大块数据频繁调入调出Redis内存数据库有着重要作用,对于大于或等于预设阈值的数据设置第二生存时间阈值,若在第二生存时间阈值内,访问次数大于或等于预设最大次数,则将所述第二缓存数据的生存时间重新置为第二生存时间阈值且将访问次数重新置为0,看起来和小于预设阈值的数据每次访问后更改一次时间类似,但却大不一样。比如:有的网站有时会发生数据访问频率并不规律,有时可能在某一时刻集中访问频率很高,但到下一时刻几乎不会访问,可能之后就又会频繁访问。如果使用每次访问调整一次时间的方式,可能就会在这暂时不访问数据的这段时间由于时间到期而被清除,如果数据块比较小,重新存入一次可能耗费较小资源,但对于较大数据块就会不一样,而采用后者会有效防止这种情况发生,如下示意图:
[0044]A B C D
[0045] 其中,A、B、C、D分别代表不同的时间段,分别有100S时间。假设A段中平均访问一次数据需要1S,B段中平均访问一次数据需要5S,C段中平均访问一次数据需要1S。
[0046] 这样如果设定的时间阈值是4S时,在B中的缓存数据就会因长时间不访问而被调出Redis内存数据库;如果给数据设定的时间阈值为2^8*4S,虽然在B段未能频繁访问,但在A段设定的缓存周期超过了B段时间,等到C段时间时数据高速频繁访问,这样会在缓存生命周期到期之前达到访问次数最高值,重新设定缓存周期,而不至于在B段由于访问频率较低而被调出内存,减少了大块缓存数据调入调出内存的资源消耗。
[0047] 图2所示为本发明实施例2的缓存数据处理装置结构图,包括获取模块201、比较处理模块202、缓存数据处理模块203;其中,所述获取模块201通过所述比较处理模块202与所述缓存数据处理模块203相连;
[0048] 所述获取模块201,用于获取数据块特征值并将所述数据块特征值发送至所述比较处理模块202;
[0049] 所述比较处理模块202,用于将数据块特征值与预设阈值进行比较并根据比较结果,对数据块进行处理并将处理结果发送至所述缓存数据处理模块203;
[0050] 所述缓存数据处理模块203,用于根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略。
[0051] 通过以下方案:获取数据块特征值并与预设阈值进行比较并根据比较结果,对数据块进行处理;根据获取的访问缓存数据次数、第一生存时间阈值、第二生存时间阈值,确定对应的缓存数据处理策略;实现了在缓存数据运行时,由访问频率自行决定生存时间,使得缓存数据的生存时间更加合理,不经常访问的数据调出缓存,节省空间;经常访问的数据常驻缓存,提高命中率,从而加快访问速度,提高访问效率。
[0052] 通过以下方案:若在第一生存时间阈值内,所述第一缓存数据被访问,则将所述第一缓存数据的生存时间重新置为第一生存时间阈值;若第一生存时间阈值到达时,所述第一缓存数据未被访问,则将所述第一缓存数据删除;采用上述方案使得对于访问比较频繁的第一缓存数据,由于访问频率高,在第一生存时间阈值到达前被访问,而不至于被清除;对于访问频率低的第一缓存数据,则会因为第一生存时间阈值到达时尚未被访问而被自动清除;采用上述方案使得对于突发性访问频率增加的数据更加有效,提高了访问效率,大大提高了用户体验。
[0053] 以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。