一种数据缓存方法、装置、电子设备和存储介质与流程

文档序号:31793426发布日期:2022-10-14 16:34阅读:82来源:国知局
一种数据缓存方法、装置、电子设备和存储介质与流程

1.本技术涉及计算机技术,涉及但不限于一种数据缓存方法、装置、电子设备和存储介质。


背景技术:

2.相关技术中,程序初始化后缓存空间固定,即使缓存中数据很少或者缓存的都是脏数据,缓存所占用空间总是不变的。
3.这样就会造成内存资源的不必要开销,尤其在故障场景中,内存资源可能因为某些修复进程的工作而开始紧张,从而造成系统出现卡顿现象。


技术实现要素:

4.有鉴于此,本技术实施例提供一种数据缓存方法、装置、电子设备和存储介质。
5.第一方面,本技术实施例提供一种数据缓存方法,所述方法包括:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整;所述缓存空间至少缓存有所述第一淘汰队列、所述第二淘汰队列、所述第一缓存队列和所述第二缓存队列。
6.在一个实施例中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中次数;所述基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整,包括:根据所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存空间的空间变化量;根据所述空间变化量,对缓存空间的大小进行调整。
7.本技术实施例中,通过根据第一淘汰队列的命中次数和第二淘汰队列的命中次数,确定所述缓存空间的空间变化量,并根据所述空间变化量,对缓存空间的大小进行调整,根据淘汰队列的命中次数确定空间变化量,能够更精确地对缓存空间的大小进行调整。
8.在一个实施例中,所述根据所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存空间的空间变化量,包括:将所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;根据所述第一累加和与所述第二累加和之间的大小关系,确定所述缓存空间的空间变化量。
9.本技术实施例中,通过根据淘汰队列的总命中次数和淘汰的元数据的总数量之间
的大小关系,确定对所述缓存空间的调整趋势,例如是增大还是减小;并确定增大或者减小的幅度,即空间变化量,从而根据淘汰队列的命中次数和淘汰队列中元数据的标识的总数量之间的大小关系,确定空间变化量,能够进一步精确地对缓存空间的大小进行调整。
10.在一个实施例中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中时长;所述基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整,包括:根据所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长,确定所述缓存空间的空间变化量;根据所述空间变化量,对缓存空间的大小进行调整。
11.本技术实施例中,通过根据第一淘汰队列的命中时长和第二淘汰队列的命中时长,确定所述缓存空间的空间变化量,并根据所述空间变化量,对缓存空间的大小进行调整,从而根据淘汰队列的命中时长确定空间变化量,能够更精确地对缓存空间的大小进行调整。
12.在一个实施例中,所述根据所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长,确定所述缓存空间的空间变化量,包括:将所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长中最近一次的命中时长确定为目标命中时长;根据所述目标命中时长与预设的时长阈值之间的大小关系,确定所述缓存空间的空间变化量。
13.本技术实施例中,通过根据淘汰队列的命中时长和预设的时长阈值之间的大小关系,确定对所述缓存空间的调整趋势,例如是增大还是减小;并确定增大或者减小的幅度,即空间变化量,从而根据淘汰队列的命中时长和时长阈值之间的大小关系,能够进一步精确地对缓存空间的大小进行调整。
14.在一个实施例中,所述基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整,包括:获取所述电子设备的剩余内存空间;基于所述剩余内存空间、所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整。
15.本技术实施例中,可以结合第一淘汰队列和第二淘汰队列的命中参数值,以及剩余内存空间,对缓存空间的大小进行调整,既考虑到缓存空间主观的业务需求,又考虑到客观的内存资源的多少,从而能够更准确地对缓存空间的大小进行调整。
16.在一个实施例中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中次数;所述基于所述剩余内存空间、所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对所述缓存空间的大小进行调整,包括:根据所述剩余内存空间、所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存空间的空间变化量;根据所述空间变化量,对缓存空间的大小进行调整。
17.本技术实施例中,可以结合第一淘汰队列和第二淘汰队列的命中参数值,以及剩余内存空间,对缓存空间的大小进行调整,既考虑到缓存空间主观的业务需求,又考虑到客观的内存资源的多少,从而能够更准确地对缓存空间的大小进行调整。另外,通过根据剩余内存空间和淘汰队列的命中次数,确定缓存空间调整的幅度,即确定空间变化量,从而够进一步精确地对缓存空间的大小进行调整。
18.在一个实施例中,所述根据所述剩余空间、所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存空间的空间变化量,包括:将所述第一淘汰队列的
命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;根据所述第一累加和与所述第二累加和之间的大小关系,确定第一空间变化量;根据所述剩余内存空间和预设的第一内存阈值之间的大小关系,确定第二空间变化量;根据所述第一空间变化量和所述第二空间变化量,确定所述缓存空间的空间变化量。
19.本技术实施例中,可以结合第一淘汰队列和第二淘汰队列的命中参数值,以及剩余内存空间,对缓存空间的大小进行调整,既考虑到缓存空间主观的业务需求,又考虑到客观的内存资源的多少,从而能够更准确地对缓存空间的大小进行调整。另外,通过根据剩余内存空间和第一内存阈值之间的大小关系,以及第一累加和与第二累加和之间的大小关系,确定所述缓存空间的调整趋势为调大或调小,并根据剩余内存空间与第一内存阈值之间的差值,以及第一累加和与第二累加和之间的差值,确定调整的幅度,从而够进一步精确地对缓存空间的大小进行调整。
20.在一个实施例中,所述第一淘汰队列和所述第二淘汰队列的数据结构为布鲁姆过滤器。
21.本技术实施例中,通过将第一淘汰队列和第二淘汰队列的数据结构设置为布鲁姆过滤器,一方面可以快速地判断元数据是否在第一缓存队列或者第二缓存队列中,另一方面,可以节省整个内存的空间,只记录元数据的名称,不记录具体的元数据。
22.在一个实施例中,所述方法还包括:在命中所述第一淘汰队列的情况下,根据所述第一缓存队列的空间和所述第二缓存队列的空间之间的大小关系,分别确定所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量;在命中所述第二淘汰队列的情况下,根据所述第一缓存队列的空间和所述第二缓存队列的空间之间的大小关系,分别确定所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量;根据所述第一缓存队列和所述第二缓存队列的空间的空间变化量,对缓存空间的大小进行调整。
23.本技术实施例中,通过根据命中的淘汰队列,以及第一缓存队列和第二缓存队列所占的空间的大小关系,调整两个缓存队列占整个缓存空间的比例(即两个缓存队列占整个缓存空间的大小),从而能够更准确地对缓存空间进行调整。
24.第二方面,本技术实施例提供一种数据缓存装置,包括:第一数据确定模块,用于确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;第一队列确定模块,用于基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;第二数据确定模块,用于确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;第二队列确定模块,用于基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;第一调整模块,用于基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整;所述缓存空间至少缓存有所述第一淘汰队列、所述第二淘汰队列、所述第一缓存队列和所述第二缓存队列。
25.第三方面,本技术实施例提供一种电子设备,包括存储器和处理器,所述存储器存储有可在处理器上运行的计算机程序,所述处理器执行所述程序时实现本技术实施例任一
所述数据缓存方法中的步骤。
26.第四方面,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现本技术实施例任一所述数据缓存方法中的步骤。
27.本技术实施例中,通过根据第一淘汰队列的命中参数值和第二淘汰队列的命中参数值,对缓存空间的大小进行调整,从而可以按照需求动态分配缓存空间。
附图说明
28.图1为本技术实施例一种数据缓存方法的流程示意图;
29.图2为本技术实施例一种缓存算法的缓存原理图;
30.图3为本技术实施例一种缓存算法的各部件对应关系图;
31.图4为本技术实施例一种元数据状态转换过程流程图;
32.图5为本技术实施例一种数据缓存装置的组成结构示意图;
33.图6为本技术实施例电子设备的一种硬件实体示意图。
具体实施方式
34.下面结合附图和实施例对本技术的技术方案进一步详细阐述。
35.图1为本技术实施例提供的数据缓存方法的实现流程示意图,应用于电子设备,如图1所示,该方法包括:
36.步骤102:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
37.其中,元数据又称为中介数据、中继数据等,元数据是描述数据或对象的数据,主要是描述数据属性的信息,用作数据管理的一部分;元数据的标识可以是元数据的数据名称;所述第一缓存队列可以是mru(most recently used,最近最常使用)队列,也可以是lru(least recently used,最近最少使用)队列,所述mru队列或所述lru队列中可以用于缓存只访问过一次的元数据;所述第一访问参数可以是访问时间,即所述mru队列或所述lru队列可以是按访问时间对元数据进行排序的,最近访问的元数据放到mru队列或所述lru队列的头部;所述第一淘汰队列中各元数据的命中参数值可以用于描述各元数据在第一淘汰队列中的命中次数或命中时长。
38.步骤104:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
39.其中,在所述命中参数值为命中次数的情况下,可以将第一淘汰队列中各元数据的命中次数之和,确定为所述第一淘汰队列中的命中次数;在所述命中参数值为命中时长的情况下,可以将第一淘汰队列中各元数据的命中时长中最近一次的命中时长,确定为所述第一淘汰队列的命中时长。
40.步骤106:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
41.其中,所述第二缓存队列可以是mfu(most frequently used,最常使用)队列,也
可以是lfu(least frequently used,最不经常使用)队列,所述mfu队列中可以用于缓存访问量大于一次的元数据;所述第二访问参数可以是访问时间和访问频率,即所述mfu队列或所述lfu队列可以是按访问时间和访问频率对元数据进行排序的,被访问多次,且最近访问的元数据放到mfu队列或所述lfu队列的头部;所述第二淘汰队列中各元数据的命中参数值可以用于描述各元数据在第二淘汰队列中的命中次数或命中时长,所述mfu队列中的元数据的排序主要考虑访问频率因子。
42.步骤108:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
43.其中,在所述命中参数值为命中次数的情况下,可以将第二淘汰队列中各元数据的命中次数之和,确定为所述第二淘汰队列中的命中次数;在所述命中参数值为命中时长的情况下,可以将第二淘汰队列中各元数据的命中时长中最近一次的命中时长,确定为所述第二淘汰队列的命中时长。
44.步骤110:基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整;所述缓存空间至少缓存有所述第一淘汰队列、所述第二淘汰队列、所述第一缓存队列和所述第二缓存队列。
45.其中,可以对所述第一淘汰队列的命中参数值和第二淘汰队列的命中参数值进行分析,得到分析结果,并在所述分析结果满足预设的条件的情况下,确定对所述缓存空间的大小进行调整,以及调整趋势是调大或调小;在所述分析结果不满足预设的条件的情况下,确定不对所述缓存空间的大小进行调整;进一步地,还可以在确定对所述缓存空间的大小进行调整的情况下,根据所述第一淘汰队列的命中参数值和第二淘汰队列的命中参数值,确定出空间变化量;并根据所述空间变化量,将所述缓存空间调大或调小所述空间变化量。
46.本技术实施例中,通过根据第一淘汰队列的命中参数值和第二淘汰队列的命中参数值,对缓存空间的大小进行调整,从而可以按照需求动态分配缓存空间。
47.本技术实施例还提供一种数据缓存方法,所述方法包括:
48.步骤202:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
49.步骤204:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
50.其中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中次数;所述第一淘汰队列的命中次数可以是所述第一淘汰队列中各元数据的命中次数之和。
51.步骤206:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
52.其中,所述第一淘汰队列和所述第二淘汰队列的数据结构为布鲁姆过滤器。所述元数据的标识可以是元数据的名称,需要说明的是,布鲁姆过滤器是压缩的特殊哈希表,可以判断元数据是否被缓存队列淘汰,布鲁姆过滤器有多个哈希函数,假设有三个哈希函数,在将元数据缓存至缓存队列中的情况下,可同时利用三个哈希函数分别为此元数据映射三
个在缓存队列对应的布鲁姆过滤器中的下标i1,i2和i3,在布鲁姆过滤器对应的槽置bf[i1]=bf[i2]=bf[i3]=1,就标识了此元数据存放在了缓存队列中;当我们在缓存队列中查找某个元数据时,就先不直接到缓存队列中查找,而是先去看看缓存队列的布鲁姆过滤器,将此元数据通过三个哈希函数映射出三个下标,若bf的这三个位置都为1,此缓存队列才有之后查找的意义;否则只要有一个位置为0,说明要查找的元数据被缓存队列淘汰;通过将第一淘汰队列和第二淘汰队列的数据结构设置为布鲁姆过滤器,一方面可以快速地判断元数据是否在mru队列或者mfu队列中,另一方面,可以节省整个内存的空间,只记录元数据的名称,不记录具体的元数据。
[0053]
步骤208:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0054]
其中,所述第二淘汰队列的命中次数可以是所述第二淘汰队列中各元数据的命中次数之和。
[0055]
步骤210:根据所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存空间的空间变化量;
[0056]
其中,由于第一淘汰队列记录由于第一缓存队列空间不足被第一缓存队列淘汰的元数据的标识,第二淘汰队列又记录由于第二缓存队列空间不足被第二缓存队列淘汰的元数据的标识;因此,第一淘汰队列的命中次数和第二淘汰队列的命中次数越多,说明被第一缓存队列和第二缓存队列淘汰的元数据越多,进而说明第一缓存队列和第二缓存队列的缓存空间偏小,需要增大缓存空间,而缓存空间增大的幅度,即缓存空间的空间变化量,可以根据第一淘汰队列的命中次数和第二淘汰队列的命中次数确定。
[0057]
步骤212:根据所述空间变化量,对缓存空间的大小进行调整。
[0058]
本技术实施例中,通过根据第一淘汰队列的命中次数和第二淘汰队列的命中次数,确定所述缓存空间的空间变化量,并根据所述空间变化量,对缓存空间的大小进行调整,从而能够更精确地对缓存空间的大小进行调整。
[0059]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0060]
步骤302:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0061]
步骤304:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0062]
步骤306:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0063]
步骤308:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0064]
其中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中次数。
[0065]
步骤310:将所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;
[0066]
步骤312:将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;
[0067]
步骤314:根据所述第一累加和与所述第二累加和之间的大小关系,确定所述缓存空间的空间变化量;
[0068]
其中,在所述第一累加和大于所述第二累加和的情况下,可以增大所述缓存空间,并可以根据所述第一累加和与所述第二累加和之间的差值,确定所述缓存空间的空间变化量,所述空间变化量可以是所述差值的倍数,所述倍数可以大于1,也可以小于1,还可以等于1。
[0069]
步骤316:根据所述空间变化量,对缓存空间的大小进行调整。
[0070]
本技术实施例中,通过根据淘汰队列的总命中次数和淘汰的元数据的总数量之间的大小关系,确定对所述缓存空间的调整趋势,例如是增大还是减小;再根据总命中次数和淘汰的元数据的总数量之间的差值,确定增大或者减小的幅度,即空间变化量,从而能够进一步精确地对缓存空间的大小进行调整。
[0071]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0072]
步骤402:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0073]
步骤404:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0074]
其中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中时长;所述第一淘汰队列的命中时长可以是所述第一淘汰队列中各元数据的命中时长中最近一次的命中时长。
[0075]
步骤406:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0076]
步骤408:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0077]
其中,所述第二淘汰队列的命中时长可以是所述第二淘汰队列中各元数据的命中时长中最近一次的命中时长。
[0078]
步骤410:根据所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长,确定所述缓存空间的空间变化量;
[0079]
其中,由于第一淘汰队列记录由于第一缓存队列空间不足被第一缓存队列淘汰的元数据的标识,第二淘汰队列又记录由于第二缓存队列空间不足被第二缓存队列淘汰的元数据的标识;因此,第一淘汰队列的命中时长和第二淘汰队列的命中时长越长,说明越不容易命中第一淘汰队列或第二淘汰队列,进而说明越容易命中第一缓存队列和第二缓存队列,进一步说明第一缓存队列和第二缓存队列的缓存空间偏大,需要减小缓存空间,而缓存空间减小的幅度,即缓存空间的空间变化量,可以根据第一淘汰队列的命中时长和第二淘汰队列的命中时长确定。
[0080]
步骤412:根据所述空间变化量,对缓存空间的大小进行调整。
[0081]
本技术实施例中,通过根据第一淘汰队列的命中时长和第二淘汰队列的命中时长,确定所述缓存空间的空间变化量,并根据所述空间变化量,对缓存空间的大小进行调整,从而能够更精确地对缓存空间的大小进行调整。
[0082]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0083]
步骤502:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0084]
步骤504:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0085]
步骤506:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0086]
步骤508:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0087]
其中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中时长;所述第一淘汰队列的命中时长可以是所述第一淘汰队列中各元数据的命中时长中最近一次的命中时长,所述第二淘汰队列的命中时长可以是所述第二淘汰队列中各元数据的命中时长中最近一次的命中时长。
[0088]
步骤510:将所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长中最近一次的命中时长确定为目标命中时长;
[0089]
步骤512:根据所述目标命中时长与预设的时长阈值之间的大小关系,确定所述缓存空间的空间变化量;
[0090]
其中,在所述目标命中时长大于预设的时长阈值的情况下,可以减小所述缓存空间,并可以根据所述目标命中时长和预设的时长阈值的差值,确定所述缓存空间的空间变化量,所述空间变化量可以是所述差值的倍数,所述倍数可以大于1,也可以小于1,还可以等于1。
[0091]
步骤514:根据所述空间变化量,对缓存空间的大小进行调整。
[0092]
本技术实施例中,通过根据淘汰队列的命中时长和预设的时长阈值之间的大小关系,确定对所述缓存空间的调整趋势,例如是增大还是减小;再根据命中时长和预设的时长阈值之间的差值,确定增大或者减小的幅度,即空间变化量,从而能够进一步精确地对缓存空间的大小进行调整。
[0093]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0094]
步骤602:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0095]
步骤604:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0096]
步骤606:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据
进行排序的;
[0097]
步骤608:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0098]
步骤610:获取所述电子设备的剩余内存空间;
[0099]
步骤612:基于所述剩余内存空间、所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整。
[0100]
本技术实施例中,可以结合第一淘汰队列和第二淘汰队列的命中参数值,以及剩余内存空间,对缓存空间的大小进行调整,既考虑到缓存空间主观的业务需求,又考虑到客观的内存资源的多少,从而能够更准确地对缓存空间的大小进行调整。
[0101]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0102]
步骤702:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0103]
其中,所述元数据的命中参数用于描述所述元数据在对应的淘汰队列中的命中次数;
[0104]
步骤704:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0105]
其中,所述第一淘汰队列的命中次数可以是所述第一淘汰队列中各元数据的命中次数之和。
[0106]
步骤706:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0107]
步骤708:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0108]
其中,所述第二淘汰队列的命中次数可以是所述第二淘汰队列中各元数据的命中次数之和。
[0109]
步骤710:获取所述电子设备的剩余内存空间;
[0110]
步骤712:根据所述剩余内存空间、所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存空间的空间变化量;
[0111]
在一个实施例中,可以将所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;根据所述第一累加和与所述第二累加和之间的大小关系,确定第一空间变化量。根据所述剩余内存空间和预设的第一内存阈值之间的大小关系,确定第二空间变化量;根据所述第一空间变化量和所述第二空间变化量,确定所述缓存空间的空间变化量。
[0112]
需要说明的是,如果第一累加和大于所述第二累加和,表明缓存空间偏小,需要增大缓存空间,并可以根据所述第一累加和与所述第二累加和之间的差值,确定第一空间变化量;如果剩余内存空间大于预设的第一内存阈值,表明剩余内存空间充裕,可以分配更多的内存空间作为缓存空间,即增大缓存空间,并可以根据所述剩余内存空间和第一内存阈
值之间的差值,确定第二空间变化量;可以将第一空间变化量和第二空间变化量中较小的空间变化量,确定为所述缓存空间的空间变化量。
[0113]
步骤714:根据所述空间变化量,对缓存空间的大小进行调整。
[0114]
其中,可以将缓存空间增大所述空间变化量。
[0115]
本技术实施例中,可以结合第一淘汰队列和第二淘汰队列的命中参数值,以及剩余内存空间,对缓存空间的大小进行调整,既考虑到缓存空间主观的业务需求,又考虑到客观的内存资源的多少,从而能够更准确地对缓存空间的大小进行调整。另外,通过根据剩余内存空间和第一内存阈值之间的大小关系,以及第一累加和与第二累加和之间的大小关系,确定所述缓存空间的调整趋势为调大或调小,并根据剩余内存空间与第一内存阈值之间的差值,以及第一累加和与第二累加和之间的差值,确定调整的幅度,从而够进一步精确地对缓存空间的大小进行调整。
[0116]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0117]
步骤802:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0118]
其中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中时长;
[0119]
步骤804:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0120]
其中,所述第一淘汰队列的命中时长可以是所述第一淘汰队列中各元数据的命中时长中最近一次的命中时长。
[0121]
步骤806:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0122]
步骤808:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0123]
其中,所述第二淘汰队列的命中时长可以是所述第二淘汰队列中各元数据的命中时长中最近一次的命中时长。
[0124]
步骤810:获取所述电子设备的剩余内存空间;
[0125]
步骤812:根据所述剩余内存空间、所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长,确定所述缓存空间的空间变化量;
[0126]
在一个实施例中,可以将所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长中最近一次的命中时长确定为目标命中时长;根据所述目标命中时长与预设的时长阈值之间的大小关系,确定第三空间变化量。根据所述剩余内存空间和预设的第二内存阈值之间的大小关系,确定第四空间变化量;根据所述第三空间变化量和所述第四空间变化量,确定所述缓存空间的空间变化量。
[0127]
需要说明的是,如果目标命中时长大于预设的时长阈值,表明缓存空间偏大,需要减小缓存空间,并可以根据目标命中时长与预设的时长阈值之间的差值,确定第三空间变化量;如果剩余内存空间小于预设的第二内存阈值,表明剩余内存空间紧张,仅能分配较少
的内存空间作为缓存空间,即减小缓存空间,并可以根据所述剩余内存空间和第二内存阈值之间的差值,确定第四空间变化量;可以将第三空间变化量和第四空间变化量中较大的空间变化量,确定为所述缓存空间的空间变化量。
[0128]
步骤814:根据所述空间变化量,对缓存空间的大小进行调整。
[0129]
其中,可以将缓存空间减小所述空间变化量。
[0130]
本技术实施例中,可以结合第一淘汰队列和第二淘汰队列的命中参数值,以及剩余内存空间,对缓存空间的大小进行调整,既考虑到缓存空间主观的业务需求,又考虑到客观的内存资源的多少,从而能够更准确地对缓存空间的大小进行调整。另外,通过根据剩余内存空间和第二内存阈值之间的大小关系,以及目标命中时长与预设的时长阈值之间的大小关系,确定所述缓存空间的调整趋势为调大或调小,并根据剩余内存空间和第二内存阈值之间的差值,以及目标命中时长与预设的时长阈值之间的差值,确定调整的幅度,从而够进一步精确地对缓存空间的大小进行调整。
[0131]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0132]
步骤902:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0133]
步骤904:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0134]
步骤906:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0135]
步骤908:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0136]
步骤910:基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整;
[0137]
步骤912:在命中所述第一淘汰队列的情况下,根据所述第一缓存队列的空间和所述第二缓存队列的空间之间的大小关系,分别确定所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量;
[0138]
其中,在命中所述第一淘汰队列、且所述第一缓存队列的空间小于所述第二缓存队列的空间的情况下,可以增大所述第一缓存队列的空间,并减小所述第二缓存队列的空间,并可以根据第一缓存队列的空间和第二缓存队列的空间之间的差值,分别确定所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量;所述第一缓存队列和所述第二缓存队列的空间的空间变化量可以相同,也可以不同。
[0139]
步骤914:在命中所述第二淘汰队列的情况下,根据所述第一缓存队列的空间和所述第二缓存队列的空间之间的大小关系,分别确定所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量;
[0140]
其中,在命中所述第二淘汰队列、且所述第二缓存队列的空间小于所述第一缓存队列的空间的情况下,可以减小所述第一缓存队列的空间,并增大所述第二缓存队列的空间,并可以根据第一缓存队列的空间和第二缓存队列的空间之间的差值,分别确定所述第
一缓存队列的空间和所述第二缓存队列的空间的空间变化量;所述第一缓存队列和所述第二缓存队列的空间的空间变化量可以相同,也可以不同。
[0141]
步骤916:根据所述第一缓存队列和所述第二缓存队列的空间的空间变化量,对缓存空间的大小进行调整。
[0142]
本技术实施例中,通过根据命中的淘汰队列,以及第一缓存队列和第二缓存队列所占的空间的大小关系,调整两个缓存队列占整个缓存空间的比例,从而能够更准确地对缓存空间进行调整。
[0143]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0144]
步骤1002:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0145]
步骤1004:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0146]
步骤1006:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0147]
步骤1008:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0148]
其中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中次数。
[0149]
步骤1010:将所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;
[0150]
步骤1012:将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;
[0151]
步骤1014:根据所述第一累加和与第二累加和之间的大小关系,对缓存空间的大小进行调整。
[0152]
其中,在所述第一累加和大于所述第二累加和的情况下,可以确定对缓存空间的大小进行调大,调大的幅度可以为预设的第五空间变化量。
[0153]
本技术实施例中,通过根据第一累加和与第二累加和之间的大小关系,确定缓存空间的调整趋势,而调整的幅度可以是预设的,并不由第一累加和与第二累加和决定,从而提高了缓存空间调整的灵活性。
[0154]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0155]
步骤1102:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0156]
步骤1104:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0157]
步骤1106:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数
据进行排序的;
[0158]
步骤1108:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0159]
其中,所述元数据的命中参数值用于描述所述元数据在对应的淘汰队列中的命中时长。
[0160]
步骤1110:将所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长中最近一个命中时长确定为目标命中时长;
[0161]
步骤1112:根据所述目标命中时长与预设的时长阈值之间的大小关系,对缓存空间的大小进行调整。
[0162]
其中,可以在所述目标命中时长大于所述预设的时长阈值的情况下,可以确定对缓存空间的大小进行调小,调小的幅度可以为预设的第六空间变化量。
[0163]
本技术实施例中,通过根据目标命中时长与预设的时长阈值之间的大小关系,确定缓存空间的调整趋势,而调整的幅度可以是预设的,并不由目标命中时长与预设的时长阈值决定,从而提高了缓存空间调整的灵活性。
[0164]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0165]
步骤1202:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0166]
其中,所述元数据的命中参数用于描述所述元数据在对应的淘汰队列中的命中次数;
[0167]
步骤1204:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0168]
其中,所述第一淘汰队列的命中次数可以是所述第一淘汰队列中各元数据的命中次数之和。
[0169]
步骤1206:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0170]
步骤1208:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0171]
其中,所述第二淘汰队列的命中次数可以是所述第二淘汰队列中各元数据的命中次数之和。
[0172]
步骤1210:获取所述电子设备的剩余内存空间;
[0173]
步骤1212:根据所述剩余内存空间、所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,对缓存空间的大小进行调整。
[0174]
在一个实施例中,可以将所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;在所述第一累加和大于所述第二累加和,且所述剩余内存空间大于预设的第一内存阈值之间的情况下,将所述缓存空间增大预设的第七空间变化量。
[0175]
本技术实施例中,通过根据第一累加和和第二累加和之间的大小关系,以及剩余内存空间与第一内存阈值之间的大小关系,确定缓存空间的调整趋势,而调整的幅度可以是预设的,从而提高了缓存空间调整的灵活性。
[0176]
本技术实施例还提供一种数据缓存方法,所述方法包括:
[0177]
步骤1302:确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0178]
步骤1304:基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0179]
步骤1306:确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0180]
步骤1308:基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0181]
步骤1310:基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整;
[0182]
步骤1312:在命中所述第一淘汰队列,且所述第一缓存队列的空间小于所述第二缓存队列的空间的情况下,将所述第一缓存队列的空间增大预设的第八空间变化量;将所述第二缓存队列的空间减小所述第八空间变化量;
[0183]
步骤1314:在命中所述第二淘汰队列,且所述第二缓存队列的空间小于所述第一缓存队列的空间的情况下,将所述第一缓存队列的空间减小预设的第九空间变化量;将所述第二缓存队列的空间增大所述第九空间变化量。
[0184]
本技术实施例中,通过根据第一淘汰队列的命中参数值和第二淘汰队列的命中参数值,对缓存空间的大小进行调整,从而可以按照需求动态分配缓存空间。进一步地,通过根据命中的淘汰队列,以及第一缓存队列和第二缓存队列所占的空间的大小关系,确定两个缓存队列所占缓存空间的调整趋势,而调整的幅度可以是预设的,并不由第一缓存队列和第二缓存队列所占的空间决定,从而提高了缓存空间调整的灵活性。
[0185]
缓存作为一种提高系统io(input/output,输入/输出)能力的方法,普遍应用于各大系统中;其原理就是缩短io路径,提高访问速度,又根据业务模型的特点和功能需求也就产生了不同的缓存算法。
[0186]
常见的缓存算法有lfu(least frequently used,最不经常使用算法),lru(least recently used,最近最少使用算法),fifo(first input first output,先进先出算法),电梯调度算法,最后期限算法(又称最早截止时间优先算法),标准arc(adaptive replacement cache,自适应缓存替换)算法等。相关技术中的缓存算法要么考虑比较单一,场景适应有限。要么实现上过于复杂,在空间和时间上开销较大。
[0187]
lru和lfu算法作为常用的缓存算法,只单一的考虑了访问时间或访问频率,适用场景比较局限,不能很好地适配大多数的应用场景,从而在某些场景下容易发生缓存脏数据的情况,达不到真正提高访问效率的目的。
[0188]
标准arc算法实现比较复杂,既考虑了时间维度也考虑了频率维度,在适用场景上
保证了丰富性,但是实现起来比较复杂,尤其是在频率维度和ghost链表的实现,相比lru算法空间复杂度和时间复杂度上都有所增加,从而造成了额外的资源开销;ghost链表可以用于存储从lru链表和lfu链表中淘汰的页面信息。
[0189]
相关技术中的缓存算法很少考虑整个缓存空间的自动调节,即程序初始化后缓存空间固定,即使缓存空间中数据很少或者缓存的都是脏数据,缓存占用空间总是不变的,这样就会造成资源的不必要开销,尤其在故障场景中,整个内存资源可能因为某些修复进程的工作而开始紧张,而缓存占用整个内存的空间又很大,从而可能造成系统出现卡顿现象。
[0190]
本技术实施例提出了一种可用于处理分布式系统中元数据缓存的方法。该方法给出了一种在多应用场景(或称为业务场景)下缓存元数据的方法,其中,元数据又称中介数据、中继数据,为描述对象的数据,主要是描述对象属性的信息,是一组名称值对,用作对象管理的一部分,用来支持如指示存储位置、历史数据、资源查找、文件记录等功能。
[0191]
相对于常见缓存算法lru、lfu和标准arc算法,本技术实施例做了以下几点优化,得到优化后的arc算法:
[0192]
第一点,在维护缓存数据时,既考虑了时间维度recency,也考虑了频率维度frequency;从而能够适应多场景需求,也能有效的缓解缓存脏数据的问题。
[0193]
第二点,根据业务模型(业务场景),动态调节mru队列和mfu队列分别占总缓存空间的比例。
[0194]
第三点,根据业务模型和收割内存策略,动态调节总缓存空间的大小,即动态调节总缓存空间所占内存的大小。达到按需分配缓存所占内存和在资源紧张的情况下降低缓存所占内存的效果;其中,业务模型可以理解为不同的对象状态转换的场景,所述对象可以是元数据;收割内存策略可以是根据优化后的arc算法运行时占用的内存大小,调整缓存空间的大小。
[0195]
相比标准arc算法,用布鲁姆过滤器来实现ghost mru和ghost mfu,替代原标准算法中用链表实现的形式,只记录对象名,即提高了判断速度,也降低了空间的开销;其中,ghost mru可以用于记录从mru队列中淘汰的元数据的标识,ghost mfu可以用于记录从mfu队列中淘汰的元数据的标识,所述元数据的标识可以是元数据的名称,又可以称为对象名。
[0196]
图2为本技术实施例提供的一种缓存算法的缓存原理图,参见图2,缓存空间至少缓存有第一淘汰队列、第二淘汰队列、第一缓存队列和第二缓存队列;
[0197]
其中,所述第一缓存队列可以是mru队列,所述mru队列用于缓存只访问过一次的元数据,所述mru队列是按访问时间进行排序的队列,最近访问的元数据放到mru队列的头部,所述mru队列中的元数据的排序主要考虑时间因子。
[0198]
所述第二缓存队列可以是mfu队列,所述mfu队列用于缓存访问量大于一次的元数据,所述mfu队列也可以是按访问时间进行排序的队列,被访问多次,且最近访问的元数据放到mfu队列的头部,所述mfu队列中的元数据的排序主要考虑访问频率因子。
[0199]
所述第一淘汰队列可以是ghost_mru队列,用于记录从mru队列中淘汰的元数据的标识,所述元数据的标识可以是所述元数据的名称,所述第一淘汰队列可以用于调节mru队列所占缓存空间的大小。
[0200]
所述第二淘汰队列可以是ghost_mfu队列,用于记录从mfu队列中淘汰的元数据的标识,所述第二淘汰队列可以用于调节mfu队列所占缓存空间的大小。
[0201]
图3为本技术实施例提供的一种缓存算法的各部件对应关系图,参见图3,总的内存大小基数可以用total_m表示,则总的缓存空间占内存大小的比例可以用arc_c表示,arc_c又可以称为总的内存空间弹性系数区间,mru队列占用的缓存空间的比例可以用arc_p表示,mfu队列占用的缓存空间的比例可以用1-arc_p表示;可以通过arc_p游标查看或处理缓存空间中mru队列和mfu队列中的元数据;可以根据arc_c游标查看内存中的缓存空间和内存中的其他空间中的数据。
[0202]
其中,假设total_m为1,arc_c的取值范围可以为0.2至1,arc_p的取值范围可以为0.05至1;则mru队列占用的缓存空间的大小mru可以用如下公式(1)计算得出:
[0203]
mru=total_m*arc_c*_arc_p公式(1);
[0204]
同理,mfu队列占用的缓存空间的大小mfu可以用如下公式(2)计算得出:
[0205]
mfu=total_m*arc_c*(1-arc_p)公式(2);
[0206]
对应地,整个缓存空间的大小total_m*arc_c可以用如下公式(3)计算得到:
[0207]
total_m*arc_c=mru+mfu公式(3);
[0208]
图4为本技术实施例提供的一种元数据状态转换过程流程图,参见图4:
[0209]
需要说明的是,元数据的状态可以包括以下五种状态:第一种状态:元数据还未存入缓存空间,第一种状态可以用arc_none表示;第二种状态:元数据缓存在mru队列中,第二种状态可以用arc_mru表示;第三种状态:元数据缓存在mfu队列中,第三种状态可以用arc_mfu表示;第四种状态:元数据缓存在ghost_mru队列中,第四种状态可以用arc_ghost_mru表示;第五种状态:元数据缓存在ghost_mfu队列中,第五种状态可以用arc_ghost_mfu表示。
[0210]
其中,元数据的访问过程可以理解为元数据的状态转换过程,访问行为包括缓存的命中和非命中,参见图4,下面为几种状态转换过程:
[0211]
(1)在元数据初次存入缓存空间的情况下,将元数据插入mru队列的头部,该状态转换过程可以表示为:arc_none-》arc_mru,或表示为enqueue mru(入mru队列)。
[0212]
(2)在应用程序或软件在mru队列中第一次找到请求的元数据的情况下,可以称为缓存第一次命中,此时可以将请求的元数据从mru队列中移动至mfu队列中,以使mru队列中仅存储访问过一次的元数据,该状态转换过程可以表示为:arc_mru-》arc_mfu,或表示为enqueue mfu(入mfu队列)。
[0213]
(3)在trim mru队列时,可以将mru队列中淘汰的元数据的标识,如元数据的名称记录在ghost_mru队列中,trim命令使操作系统能通知固态硬盘那些元数据已不再考虑使用,可以被擦除,该状态转换过程可以表示为:arc_mru-》arc_ghost_mru,或表示为in ghost_mru(入ghost_mru队列)。
[0214]
(4)在应用程序或软件在mfu队列中第n次找到请求的元数据的情况下,可以称为缓存第n次命中,此时可以将请求的元数据从mfu队列的尾部移动至mfu队列的头部,该状态转换过程可以表示为:arc_mfu-》arc_mfu。
[0215]
(5)在trim mfu队列时,可以将mfu队列中淘汰的元数据的标识,如元数据的名称记录在ghost_mfu队列中,该状态转换过程可以表示为:arc_mfu-》arc_ghost_mfu,或表示为in ghost_mfu(入ghost_mfu队列)。
[0216]
(6)在应用程序或软件在ghost_mru中找到请求的元数据的情况下,可以称为缓存
signal processing)或现场可编程门阵列(fpga,field programmable gate array)等。
[0226]
图5为本技术实施例数据缓存装置的组成结构示意图,如图5所示,所述装置500包括第一数据确定模块501、第一队列确定模块502、第二数据确定模块503、第二队列确定模块504和第一调整模块505,其中:
[0227]
第一数据确定模块501,用于确定第一淘汰队列中各元数据的命中参数值,所述第一淘汰队列用于记录从第一缓存队列中淘汰的元数据的标识;所述第一缓存队列是基于第一访问参数对元数据进行排序的;
[0228]
第一队列确定模块502,用于基于所述第一淘汰队列中各元数据的命中参数值,确定所述第一淘汰队列的命中参数值;
[0229]
第二数据确定模块503,用于确定第二淘汰队列中各元数据的命中参数值,所述第二淘汰队列用于记录从第二缓存队列淘汰的元数据的标识;所述第二缓存队列是基于第二访问参数对元数据进行排序的;
[0230]
第二队列确定模块504,用于基于所述第二淘汰队列中各元数据的命中参数值,确定所述第二淘汰队列的命中参数值;
[0231]
第一调整模块505,用于基于所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整;所述缓存空间至少缓存有所述第一淘汰队列、所述第二淘汰队列、所述第一缓存队列和所述第二缓存队列。
[0232]
在一个实施例中,所述元数据的命中参数用于描述所述元数据在对应的淘汰队列中的命中次数;所述第一调整模块505,包括:第一确定子模块,用于根据所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存空间的空间变化量;第一调整子模块,用于根据所述空间变化量,对缓存空间的大小进行调整。
[0233]
在一个实施例中,所述第一确定子模块,包括:第一累加单元,用于将所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;第二累加单元,用于将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;第一确定单元,用于根据所述第一累加和与所述第二累加和之间的大小关系,确定所述缓存空间的空间变化量。
[0234]
在一个实施例中,所述元数据的命中参数用于描述所述元数据在对应的淘汰队列中的命中时长;所述第一调整模块505,包括:第二确定子模块,用于根据所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长,确定所述缓存空间的空间变化量;第二调整子模块,用于根据所述空间变化量,对缓存空间的大小进行调整。
[0235]
在一个实施例中,所述第二确定子模块,包括:第二确定单元,用于将所述第一淘汰队列的命中时长和所述第二淘汰队列的命中时长中最近一次的命中时长确定为目标命中时长;第三确定单元,用于根据所述目标命中时长与预设的时长阈值之间的大小关系,确定所述缓存空间的空间变化量。
[0236]
在一个实施例中,所述第一调整模块505,包括:获取子模块,用于获取所述电子设备的剩余内存空间;第三调整子模块,用于基于所述剩余内存空间、所述第一淘汰队列的命中参数值和所述第二淘汰队列的命中参数值,对缓存空间的大小进行调整。
[0237]
在一个实施例中,所述第三调整子模块,包括:第四确定单元,用于根据所述剩余内存空间、所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数,确定所述缓存
空间的空间变化量;调整单元,用于根据所述空间变化量,对缓存空间的大小进行调整。
[0238]
在一个实施例中,所述第四确定单元,包括:第一累加子单元,用于将所述第一淘汰队列的命中次数和所述第二淘汰队列的命中次数进行累加,得到第一累加和;第二累加子单元,用于将所述第一淘汰队列的元数据的标识的数量和所述第二淘汰队列中元数据的标识的数量进行累加,得到第二累加和;第一确定子单元,用于根据所述第一累加和与所述第二累加和之间的大小关系,确定第一空间变化量;第二确定子单元,用于根据所述剩余内存空间和预设的第一内存阈值之间的大小关系,确定第二空间变化量;第五确定子单元,用于根据所述第一空间变化量和所述第二空间变化量,确定所述缓存空间的空间变化量。
[0239]
在一个实施例中,所述第一淘汰队列和所述第二淘汰队列的数据结构为布鲁姆过滤器。
[0240]
在一个实施例中,所述装置还包括:第一变化量确定模块,用于在命中所述第一淘汰队列的情况下,根据所述第一缓存队列的空间和所述第二缓存队列的空间之间的大小关系,分别确定所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量;第二变化量确定模块,用于在命中所述第二淘汰队列的情况下,根据所述第一缓存队列的空间和所述第二缓存队列的空间之间的大小关系,分别确定所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量;第二调整模块,用于根据所述第一缓存队列的空间和所述第二缓存队列的空间的空间变化量,对缓存空间的大小进行调整。
[0241]
需要说明的是,本技术实施例中,如果以软件功能模块的形式实现上述的数据缓存方法,并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得电子设备(可以是手机、平板电脑、台式机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:u盘、移动硬盘、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。这样,本技术实施例不限制于任何特定的硬件和软件结合。
[0242]
以上装置实施例的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果。对于本技术装置实施例中未披露的技术细节,请参照本技术方法实施例的描述而理解。
[0243]
对应地,本技术实施例提供一种电子设备,图6为本技术实施例电子设备的一种硬件实体示意图,如图6所示,该电子设备600的硬件实体包括:包括存储器601和处理器602,所述存储器601存储有可在处理器602上运行的计算机程序,所述处理器602执行所述程序时实现上述实施例数据缓存方法中的步骤。
[0244]
存储器601配置为存储由处理器602可执行的指令和应用,还可以缓存待处理器602以及电子设备600中各模块待处理或已经处理的数据(例如,图像数据、音频数据、语音通信数据和视频通信数据),可以通过闪存(flash)或随机访问存储器(random access memory,ram)实现。
[0245]
对应地,本技术实施例提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述实施例中提供的数据缓存方法中的步骤。
[0246]
这里需要指出的是:以上存储介质和设备实施例的描述,与上述方法实施例的描
述是类似的,具有同设备实施例相似的有益效果。对于本技术存储介质和方法实施例中未披露的技术细节,请参照本技术设备实施例的描述而理解。
[0247]
应理解,说明书通篇中提到的“一个实施例”或“一实施例”意味着与实施例有关的特定特征、结构或特性包括在本技术的至少一个实施例中。因此,在整个说明书各处出现的“在一个实施例中”或“在一实施例中”未必一定指相同的实施例。此外,这些特定的特征、结构或特性可以任意适合的方式结合在一个或多个实施例中。应理解,在本技术的各种实施例中,上述各过程的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本技术实施例的实施过程构成任何限定。上述本技术实施例序号仅仅为了描述,不代表实施例的优劣。
[0248]
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者装置不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者装置所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括该要素的过程、方法、物品或者装置中还存在另外的相同要素。
[0249]
在本技术所提供的几个实施例中,应该理解到,所揭露的设备和方法,可以通过其它的方式实现。以上所描述的设备实施例仅仅是示意性的,例如,所述单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,如:多个单元或组件可以结合,或可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的各组成部分相互之间的耦合、或直接耦合、或通信连接可以是通过一些接口,设备或单元的间接耦合或通信连接,可以是电性的、机械的或其它形式的。
[0250]
上述作为分离部件说明的单元可以是、或也可以不是物理上分开的,作为单元显示的部件可以是、或也可以不是物理单元;既可以位于一个地方,也可以分布到多个网络单元上;可以根据实际的需要选择其中的部分或全部单元来实现本实施例方案的目的。另外,在本技术各实施例中的各功能单元可以全部集成在一个处理单元中,也可以是各单元分别单独作为一个单元,也可以两个或两个以上单元集成在一个单元中;上述集成的单元既可以采用硬件的形式实现,也可以采用硬件加软件功能单元的形式实现。
[0251]
本领域普通技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,该程序在执行时,执行包括上述方法实施例的步骤;而前述的存储介质包括:移动存储设备、只读存储器(read only memory,rom)、磁碟或者光盘等各种可以存储程序代码的介质。或者,本技术上述集成的单元如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读取存储介质中。基于这样的理解,本技术实施例的技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得计算机设备(可以是手机、平板电脑、台式机、个人数字助理、导航仪、数字电话、视频电话、电视机、传感设备等)执行本技术各个实施例所述方法的全部或部分。而前述的存储介质包括:移动存储设备、rom、磁碟或者光盘等各种可以存储程序代码的介质。
[0252]
本技术所提供的几个方法实施例中所揭露的方法,在不冲突的情况下可以任意组合,得到新的方法实施例。本技术所提供的几个产品实施例中所揭露的特征,在不冲突的情
况下可以任意组合,得到新的产品实施例。本技术所提供的几个方法或设备实施例中所揭露的特征,在不冲突的情况下可以任意组合,得到新的方法实施例或设备实施例。
[0253]
以上所述,仅为本技术的实施方式,但本技术的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本技术揭露的技术范围内,可轻易想到变化或替换,都应涵盖在本技术的保护范围之内。因此,本技术的保护范围应以所述权利要求的保护范围为准。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1