CN111309650B - 缓存控制方法、装置、存储介质及设备 - Google Patents
缓存控制方法、装置、存储介质及设备 Download PDFInfo
- Publication number
- CN111309650B CN111309650B CN202010086059.2A CN202010086059A CN111309650B CN 111309650 B CN111309650 B CN 111309650B CN 202010086059 A CN202010086059 A CN 202010086059A CN 111309650 B CN111309650 B CN 111309650B
- Authority
- CN
- China
- Prior art keywords
- data
- area
- stored
- hit
- region
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000003139 buffering effect Effects 0.000 claims abstract description 23
- 230000001960 triggered effect Effects 0.000 claims abstract description 23
- 230000008030 elimination Effects 0.000 claims abstract description 20
- 238000003379 elimination reaction Methods 0.000 claims abstract description 20
- 238000004590 computer program Methods 0.000 claims description 9
- 238000001514 detection method Methods 0.000 claims description 3
- 239000002609 medium Substances 0.000 description 13
- 238000010586 diagram Methods 0.000 description 8
- 230000008901 benefit Effects 0.000 description 7
- 238000004422 calculation algorithm Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 230000005012 migration Effects 0.000 description 1
- 238000013508 migration Methods 0.000 description 1
- 239000012120 mounting media Substances 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 235000019633 pungent taste Nutrition 0.000 description 1
- 230000008707 rearrangement Effects 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000004904 shortening Methods 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/12—Replacement control
- G06F12/121—Replacement control using replacement algorithms
- G06F12/123—Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2212/00—Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
- G06F2212/10—Providing a specific technical effect
- G06F2212/1032—Reliability improvement, data loss prevention, degraded operation etc
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明实施例公开了缓存控制方法、装置、存储介质及设备。其中,该方法包括:检测到第一数据的缓存事件被触发;若确定第一数据为新增数据,且缓存空间中的第一区域已达到对应的存储上限,则将第一区域的尾部位置所存储的第二数据淘汰,其中,缓存空间中包含至少两个区域,第一区域为至少两个区域中对应的命中次数最小的区域,命中次数包括缓存空间中的同一个数据被重复访问的次数;将第一数据存入所述第一区域的头部位置。本发明实施例提供的技术方案,可以对命中次数较多的数据进行保护,可有效避免热门数据因大批量新数据集中存入而被淘汰。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及缓存控制方法、装置、存储介质及设备。
背景技术
对于一些提供资源下载服务或内容分发服务的设备或系统(简称下载模块),通常会配置缓存模块,可提高服务响应速度。例如,客户端向下载模块发起资源下载请求,下载模块首先查询缓存模块中是否存在客户端请求的资源文件,若存在,则直接向客户端下发该资源文件,无需向服务器转发请求并将服务器回应的资源文件转发给客户端。然而,缓存模块中的存储空间是有限的,通常需要设置缓存淘汰策略来决定缓存模块中哪些数据应该被移除,以保证有足够的存储用于存储新的资源文件。
目前,缓存淘汰策略主要基于最近最少使用(Least recently used,LRU)算法确定,LRU算法的思想是如果一个数据在最近一段时间没有被访问到,那么可以认为在将来它被访问的可能性也很小,因此,当空间满时,最久没有访问的数据最先被淘汰。最常见的实现方法是使用一个链表保存缓存数据,新数据插入链表头部,缓存命中则将数据迁移到链表头部,链表满时将链表尾部数据丢弃。然而,上述缓存控制方案并不完善,需要改进。
发明内容
本发明实施例提供了缓存控制方法、装置、存储介质和设备,可以优化现有的缓存控制方案。
第一方面,本发明实施例提供了一种缓存控制方法,该方法包括:
检测到第一数据的缓存事件被触发;
若确定所述第一数据为新增数据,且缓存空间中的第一区域已达到对应的存储上限,则将所述第一区域的尾部位置所存储的第二数据淘汰,其中,所述缓存空间中包含至少两个区域,所述第一区域为所述至少两个区域中对应的命中次数最小的区域,所述命中次数包括所述缓存空间中的同一个数据被重复访问的次数;
将所述第一数据存入所述第一区域的头部位置。
第二方面,本发明实施例提供了一种缓存控制装置,该装置包括:
检测模块,用于检测第一数据的缓存事件是否被触发;
淘汰模块,用于在检测到第一数据的缓存事件被触发时,若确定所述第一数据为新增数据,且缓存空间中的第一区域已达到对应的存储上限,则将所述第一区域的尾部位置所存储的第二数据淘汰,其中,所述缓存空间中包含至少两个区域,所述第一区域为所述至少两个区域中对应的命中次数最小的区域,所述命中次数包括所述缓存空间中的同一个数据被重复访问的次数;
缓存控制模块,用于将所述第一数据存入所述第一区域的头部位置。
第三方面,本发明实施例提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现如本发明实施例提供的缓存控制方法。
第四方面,本发明实施例提供了一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如本发明实施例提供的缓存控制方法。
本发明实施例中提供的缓存控制方案,在缓存空间中依据所对应的命中次数的大小设置至少两个区域,在检测到作为新增数据的第一数据的缓存事件被触发时,若缓存空间中对应命中次数最小的第一区域已达到对应的存储上限,则将第一区域的尾部位置所存储的第二数据淘汰,并将第一数据存入第一区域的头部位置。通过采用上述技术方案,对缓存区域进行划分,当新增数据时,先存入对应命中次数最小的区域,若该区域已满,则从该区域内部进行数据淘汰,不会影响到其他对应命中次数较大的区域中的数据,从而对命中次数较多的数据进行保护,可有效避免热门数据因大批量新数据集中存入而被淘汰。
附图说明
图1为本发明实施例提供的一种缓存控制方法可适用的应用场景的场景架构图;
图2为本发明实施例提供的一种缓存控制方法的流程示意图;
图3为本发明实施例提供的又一种缓存控制方法的流程示意图;
图4为本发明实施例提供的一种缓存空间区域划分示意图;
图5为本发明实施例提供的一种缓存控制装置的结构框图;
图6为本发明实施例提供的一种计算机设备的结构框图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。此外,在不冲突的情况下,本发明中的实施例及实施例中的特征可以相互组合。
图1为本发明实施例提供的一种缓存控制方法可适用的应用场景的场景架构图。具体的,参考图1,该应用场景中可以包括客户端10、下载模块20、服务器30和缓存模块40。如图1所示,客户端10可以向下载模块20发起数据下载请求,下载模块20向服务器30转发该下载请求,服务器30回应下载请求,将请求的数据发送给下载模块20。下载模块20接收到数据后,转发给客户端10。下载模块20中可以加入缓存模块40,用于存储部分数据。当客户端10的下载请求到达下载模块20时,下载模块20首先查询缓存模块40,如果缓存模块40中存在该下载请求对应的数据,则可直接向客户端10下发该数据,无需向服务器30请求。而对于缓存模块40来说,其容量有限,只能存储部分数据。缓存淘汰算法可以用于决定缓存模块中哪些数据应该被移除,用于存储新的数据。如前文所述,最常用的缓存淘汰算法为LRU,实现方法是使用一个链表保存缓存数据,新数据插入链表头部,缓存命中则将数据迁移到链表头部,链表满时将链表尾部数据丢弃,这种方案中,热点数据由于访问频率较高,会驻留在LRU链表靠近头部的位置,淘汰的优先级最低,非热点数据则随着新数据的插入逐渐后移,最终被淘汰。然而,新数据写入链表头部,即淘汰优先级最低的位置,但是这个数据不一定是热点数据,热点数据一般只是全部数据的一小部分,大量新数据的写入常常会导致热点数据被淘汰,导致缓存命中率较低。其中,命中可以理解为缓存模块的缓存空间中的同一个数据被重复访问,命中率可以理解为客户端发起数据下载请求后,所对应的数据存储于缓存空间中的概率。本发明实施例中,对缓存区域进行划分,当新增数据时,先存入对应命中次数最小的区域,若该区域已满,则从该区域内部进行数据淘汰,不会影响到其他对应命中次数较大的区域中的数据。更具体的,可适用于短视频下载业务场景,也可适用于其他如图片、文档或音频等资源的下载业务场景。
下面结合具体实施例对本发明作进一步的详细说明。
图2为本发明实施例提供的一种缓存控制方法的流程示意图,该方法可以由缓存控制装置执行,其中该装置可由软件和/或硬件实现,一般可集成在计算机设备中。如图2所示,该方法包括:
步骤201、检测到第一数据的缓存事件被触发。
示例性的,本发明实施例中的计算机设备可以是实现上述缓存模块相关功能的设备,具体实现方式不做限定,可以是独立设备,也可以是集群设备等。
示例性的,数据的缓存事件的触发方式可根据实际情况设置,具体可以由缓存模块所属的下载模块根据缓存策略来确定。例如,在接收到客户端针对第一数据的访问请求时,可认为检测到第一数据的缓存事件被触发。对于短视频等视频下载业务场景来说,可具体为检测到视频客户端针对第一视频数据发出访问请求。第一数据可以是下载模块能够提供下载服务的任意一个或一组数据,具体可以以文件形式存在,例如视频文件或其他资源文件。
步骤202、若确定所述第一数据为新增数据,且缓存空间中的第一区域已达到对应的存储上限,则将所述第一区域的尾部位置所存储的第二数据淘汰。
在本发明实施例中,缓存空间可以理解为缓存模块中用于存储缓存数据的存储空间。所述缓存空间中包含至少两个区域,所述第一区域为所述至少两个区域中对应的命中次数最小的区域,所述命中次数包括所述缓存空间中的同一个数据被重复访问的次数。新增数据表示缓存空间中并未存储该数据,对于新增数据来说,命中次数为0。第一区域对应的命中次数可仅包含0,也可以在0基础上包括1或2等更大次数。需要说明的是,区域对应的命中次数可理解为对该区域的标识,并不仅限于存储对应命中次数的数据,例如,划分两个区域,第一个区域为第一区域,第一区域对应的命中次数为0,第二个区域对应的命中次数为1,随着缓存空间中的数据更新,命中次数为1的数据也可能被存储至第一区域,由具体的缓存淘汰策略决定。
本发明实施例中,对于作为新增数据的第一数据,当需要对其进行缓存时,先存入第一区域,具体可以存储至第一区域的头部位置,该头部位置可以理解为第一区域中相对于已缓存数据来说靠近第一区域的头部的位置。当第一区域已达到对应的存储上限时,需要淘汰第一区域中的已存储区域,以便为第一数据腾出空间。具体的,可以将第一区域的尾部位置所存储的第二数据淘汰,这样不会对对应命中次数更高的区域中的已缓存数据造成影响。
步骤203、将所述第一数据存入所述第一区域的头部位置。
示例性的,在将第二数据淘汰后,第一区域中已空出多余的空间,可以用来存储第一数据,为了避免新增的第一数据在近期被优先淘汰,可以将第一数据存入第一区域的头部位置。具体的,可以将第一区域中的各数据顺次向尾部位置移动存储,将头部位置空出,用于存储第一数据。需要说明的是,为了便于说明,本发明实施例针对第一数据的大小小于或等于第二数据的情况进行说明,对于第一数据的大小大于第二数据的情况可根据实际情况设置相应的策略,例如,将第一数据中的部分内容存入第一区域的头部位置,或提示无法存储第一数据等。
本发明实施例中提供的缓存控制方案,在缓存空间中依据所对应的命中次数的大小设置至少两个区域,在检测到作为新增数据的第一数据的缓存事件被触发时,若缓存空间中对应命中次数最小的第一区域已达到对应的存储上限,则将第一区域的尾部位置所存储的第二数据淘汰,并将第一数据存入第一区域的头部位置。通过采用上述技术方案,对缓存区域进行划分,当新增数据时,先存入对应命中次数最小的区域,若该区域已满,则从该区域内部进行数据淘汰,不会影响到其他对应命中次数较大的区域中的数据,从而对命中次数较多的数据进行保护,可有效避免热门数据因大批量新数据集中存入而被淘汰,与现有的基于LRU算法的缓存淘汰方案相比,可有效提高缓存数据的命中率。
在一些实施例中,所述至少两个区域中的每个区域对应至少一个命中次数,所述至少两个区域依据所对应的最小命中次数降序排列,所述第一区域对应的最小命中次数为0。也即,第一区域为末位区域,示例性的,缓存空间可以以链表的形式存在。对于所划分的至少两个区域,可以按照多对应的最小命中次数降序排列。例如,假设命中次数包括0、1、2、3、4和5,划分为3个区域,第一个区域(可称为低命中区域)对应的命中次数为0和1,第二个区域(可称为中命中区域)对应的命中次数为2和3,第三个区域(可称为高命中区域)对应的命中次数为4和5,则第三个区域排在头部,第二个区域排在中间,第一个区域排在尾部。其他划分及排序情况同理,本发明实施例不再赘述。
在一些实施例中,在所述检测到第一数据的缓存事件被触发之后,还包括:若确定所述第一数据已存储于第二区域中,则将所述第一数据移动存储至所述第二区域的对应位置,其中,所述第二区域为所述至少两个区域中的首位区域。可选的,所述对应位置可以是头部位置。这样设置的好处在于,对于已经存储于对应命中次数最高区域中的数据来说,又增加了一次命中,且是最近访问的数据,因此,可表明其热度很高,近期再次被访问的概率也很高,可以不用考虑具体的当前命中次数,将其存储至首位区域的头部位置,可使得其淘汰优先级最低,也即最不容易被淘汰,进一步提升缓存数据命中率。对于第二区域中相对于第二数据的原存储位置更靠近头部位置的已缓存数据来说,可顺次移动存储。
在一些实施例中,所述将所述第一数据移动存储至所述第二区域的对应位置,包括:在所述第一数据对应的当前命中次数大于或等于所述第二区域对应的最大命中次数时,将所述第一数据移动存储至所述第二区域的头部位置。这样设置的好处在于,第二区域可能对应多个命中次数,当第一数据对应的当前命中次数大于或等于第二区域对应的最大命中次数时,可以说明比第一数据的命中次数更高的已缓存数据很少甚至不存在,此时,可以将第一数据存储至第二区域的头部位置,以保证第一数据当前的淘汰优先级最低。
在一些实施例中,还可包括:若所述第一数据对应的当前命中次数小于所述第二区域对应的最大的命中次数,则将所述第一数据移动存储至所述第二区域中与所述当前命中次数对应的位置。这样设置的好处在于,可以更加合理地更新第一数据的存储位置。其中,与所述当前命中次数对应的位置具体可以包括所述第二区域中已存储的命中次数与所述当前命中次数相同的数据之前,这样,由于第一数据是最近访问的数据,因此可保证第一数据相对于已存储的命中次数相同的其他数据来说,具有更低的淘汰优先级。
在一些实施例中,在所述检测到第一数据的缓存事件被触发之后,还包括:若确定所述第一数据已存储于第三区域中,则判断所述第一数据对应的当前命中次数是否等于第四区域对应的最小命中次数,若是,则将所述第一数据移动存储至所述第四区域,其中,所述第三区域包括所述至少两个区域中的除首位区域之外的区域,所述第四区域包括与所述第三区域相邻并位于所述第三区域之前的区域。当所述至少两个区域的总数量为2时,所述第三区域与所述第一区域相同。这样设置的好处在于,对于再次命中的数据来说,若其当前命中次数已经等于淘汰优先级更低的区域对应的最小命中次数时,可以及时将该数据移动存储至前一个区域,降低该数据的淘汰优先级。本发明实施例对于第一数据在第四区域中的具体存储位置不做限定,例如可以是第四区域的头部位置、尾部位置或其他位置。
在一些实施例中,所述将所述第一数据移动存储至所述第四区域,包括:当所述第四区域已达到对应的存储上限时,将所述第一数据移动存储至所述第四区域,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域。这样设置的好处在于,当第四区域已经存储满时,可以及时将该区域中淘汰优先级最高的数据移动存储至第三区域中,保证最新访问的第一数据能够成功被存储至第四区域中。第一数据在第四区域中的具体存储位置不做限定,例如可以是第四区域的尾部位置。第三数据在第三区域中的具体存储位置不做限定,例如可以是第三区域的头部位置。具体的,在一些实施例中,所述将所述第一数据移动存储至所述第四区域,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域,包括:将所述第一数据移动存储至所述第四区域的尾部位置,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域的头部位置。
在一些实施例中,还可包括:若所述第一数据对应的当前命中次数小于所述第四区域对应的最小命中次数,则将所述第一数据移动存储至所述第三区域中与所述当前命中次数对应的位置。其中,与所述当前命中次数对应的位置具体可以包括所述第二区域中已存储的命中次数与所述当前命中次数相同的数据之前,这样,由于第一数据是最近访问的数据,因此可保证第一数据相对于已存储的命中次数相同的其他数据来说,具有更低的淘汰优先级。
在一些实施例中,所述至少两个区域的总数量以及每个区域对应的容量,根据所述缓存空间的总容量以及所述缓存空间对应的客户端的历史数据访问记录中样本数据的热度确定。这样设置的好处在于,能够更加合理地对缓存空间进行划分。其中,至少两个区域的总数量也即将缓存空间划分为多少个区域,每个区域对应的容量也即所划分的各个区域分别能够存储的数据量大小。不同区域对应的容量可以相同,也可不同,本发明实施例不做限定。缓存空间的总容量也即缓存模块能够用于存储缓存数据的存储空间大小。缓存空间可以对应一个或多个客户端,本发明实施例不做限定。历史数据访问记录可包括在预设历史时间段内,客户端向下载模块发出下载请求的情况,例如,同一个数据被请求访问的次数、时间间隔以及每两次访问该数据之间访问其他数据的情况等。预设历史时间段可根据实际需求进行设置。历史数据访问记录中的样本数据可包括被访问的数据。样本数据的热度可包括样本数据在预设历史时间段内被访问的总次数或访问频率等,也可包括每两次访问样本数据之间访问其他数据的数量等。
在一些实施例中,所述至少两个区域中的每个区域对应一个命中次数;依据所述至少两个区域对应的初始容量进行区域划分;对于所述至少两个区域中的当前区域,将从当前区域被移动存储至上一区域的样本数据记为目标样本数据,其中,所述上一区域为与所述当前区域相邻并位于所述当前区域之前的区域;对于每个目标样本数据,获取当前目标样本数据从进入所述当前区域至被移动存储至上一区域之间,被访问的其他样本数据的第一数量;根据所有目标样本数据的第一数量确定第一中间数量;所述当前区域对应的目标容量与所述总容量的第一比值,大于或等于所述第一中间数量与所述样本数据的总数量的第二比值,以所述当前区域对应的目标容量替换所述当前区域对应的初始容量。这样设置的好处在于,能够更加合理地确定每个区域对应的容量。其中,各区域的初始容量可以是经验值。可选的,根据所有目标样本数据的第一数量确定第一中间数量,具体可以基于各第一数量通过预设的数学运算确定第一中间数量,预设的数学运算例如可以是取中间值、取平均值或取最大值等等。例如,设缓存空间的总容量为L,样本数据的总数量为N,对于第一区域来说,其对应的目标容量为x,对于按照初始容量进行划分的缓存空间来说,从第一区域移动存储至上一区域的概率为t%,也即存在t%的样本数据从第一区域移动存储至第二区域,根据这t%的样本数据对应的第一数量,确定第一中间数量c,则第一比值为x/L,第二比值为c/N,第一比值大于或等于第二比值时满足本发明实施例的容量设置策略,在确定目标容量后,对初始容量进行更新。
图3为本发明实施例提供的又一种缓存控制方法的流程示意图,为了便于说明,以短视频下载场景下,每个区域对应一个命中次数为例进行说明。
在短视频下载场景下,热点视频文件的请求频率相对更高,并且热点视频文件会随着时间的迁移而发生变化。在有限的缓存空间中写入更多的热点视频文件可以提升命中率。从信息熵的角度理解,命中次数越高,对应事件出现的概率越大,包含的信息量越大,越能够表征该视频是当前的热点视频。新数据可以理解为命中0次。图4为本发明实施例提供的一种缓存空间区域划分示意图,如图4所示,以类似LRU链表的形式来简单表示本发明实施例中的缓存空间,从头部到尾部共有(K+1)个插入位置,其中,K表示命中次数,也即缓存空间被划分为(K+1)个区域。命中的次数K越高,插入链表的位置越靠近链表头部,相应的淘汰优先级也就越低,对应图中颜色越深的部分,即插入位置的索引可表示为
Index=f(K,L)
其中,L为链表长度,K为命中次数,f(K,L)根据K和L计算插入的索引位置,可知Index应随K增加而递减,即f(K,L)可以是K的减函数。
从另一个角度分析,假设数据的到达速率(从服务器下载到缓存模块的速率)和请求频次(客户端请求下载的频次)是稳定的,那么在固定长度的链表中(K+1)个位置到链表尾部的时间间隔Tk也是稳定的。那么从|Tk-链表尾部|构成了一个过滤高频数据的滤波器,即出现频次大于1/Tk的数据才能在淘汰之前命中,从而插入到更接近链表头部的位置。通过改进数据的插入位置,改变了链表不同区域的更新速率:越靠近链表尾部,数据更新速率越快,筛选高频数据的条件越严格。越靠近链表头部,数据更新速率越慢,对高频数据起到了很好的保护作用。
在固定L的情况下,视频的热度会影响到K的选值。定义c为一个视频被访问两次时,中间被访问的其他视频数量(也即第一数量),c可以通过线上数据计算。为了简化计算,先假设K为1,即一个容量为L的链表,会被分为两部分,T0为低命中区,|T1-T0|为高命中区。假设一个视频从低命中区命中,被放到高命中区的概率为t%,那么可以得到,t%的视频的C值(根据多个第一数量计算后得到的第一中间值)小于等于T0时最优。K>1时同理。通过短视频应用程序的线上数据,可以得出Index和k的较优值,也即可以得出所要划分的区域的总数量以及每个区域对应的容量。
继续假设K为1的情况,即缓存空间(即缓冲区)分为高命中区和低命中区。数据进入缓存空间时有三种情况。第一种情况,一个原先不在缓冲区的新数据会先被存入到低命中区的头部位置,同时会淘汰掉低命中区的尾部数据。第二种情况,数据如果已经存在于缓冲区中,且在高命中区,则该数据会被替换到高命中区的最头部。第三种情况,如果数据原先存在,且在低命中区,则会把该数据移动到高命中区,并将高命中区尾部数据替换到低命中区头部,这时候数据总量是不变的,不会淘汰任何数据。在K>1时,例如K=2,此时缓冲区被划分为高命中区,中命中区,低命中区。中命中区和低命中区的逻辑如同K=1时的高低命中区的逻辑,高命中区和中命中区的逻辑同K=1时的高低命中区的逻辑。K>2时同理。
可选的,如图3所示,该方法可包括:
步骤301、检测到第一数据的缓存事件被触发。
示例性的,可以是检测到短视频客户端针对第一视频数据发出访问请求。
步骤302、判断第一数据是否为新增数据,若是,则执行步骤303;否则,执行步骤306。
步骤303、判断缓存空间中的第一区域是否已达到对应的存储上限,若是,则执行步骤304;否则,执行步骤305。
其中,第一区域为对应命中率为0的区域(末位区域),也即淘汰优先级最高的区域。
步骤304、将第一区域的尾部位置所存储的第二数据淘汰。
步骤305、将第一数据存入第一区域的头部位置。
步骤306、判断第一数据是否已存储于第二区域中,若是,则执行步骤307;否则,执行步骤308。
其中,第二区域为对应命中率最高的区域(首位区域),也即淘汰优先级最低的区域。
步骤307、将第一数据移动存储至第二区域的头部位置。
需要说明的是,本发明实施例中涉及的移动存储操作,可以包括将所要移动的数据移动至目标位置,其余数据按照原有的存储顺序依次变更存储位置。例如,位置1、2、3、4和5分别存储数据a、b、c、d和e,若需要将d移动存储至位置1,则移动存储操作后,位置1、2、3、4和5分别存储数据d、a、b、c和e。
步骤308、确定第一数据已存储于第三区域,判断第四区域是否已达到对应的存储上限,若是,则执行步骤309;否则,执行步骤310。
当第一数据不是新数据,且未存储于第二区域时,说明其已存储在除了首位区域的其他区域,第三区域为其他区域中的任意一个区域,可包括第一区域。第四区域是与第三区域相邻并位于第三区域之前的区域,也即第四区域相比第三区域更靠近整个链表的头部。
步骤309、将第一数据移动存储至第四区域的尾部位置,并将第四区域的尾部位置所存储的第三数据移动存储至第三区域的头部位置。
步骤310、将第一数据移动存储至第四区域的尾部位置。
本发明实施例提供的缓存控制方法,可以根据缓存空间的总容量以及缓存空间对应的客户端的历史数据访问记录中样本数据的热度来将缓存空间划分多个区域,并为每个区域设置对应的命中次数和容量,当新增数据时,先存入对应命中次数最小的区域,若该区域已满,则从该区域内部进行数据淘汰,不会影响到其他对应命中次数较大的区域中的数据,从而对命中次数较多的数据进行保护,可有效避免热门数据因大批量新数据集中存入而被淘汰,有效提升缓存数据的命中率,且该方案算法复杂度较低,具体实现时伸缩性较大,可以适应不同客户端具体的使用需求,针对性强且灵活性高。
图5为本发明实施例提供的一种缓存控制装置的结构框图,该装置可由软件和/或硬件实现,一般可集成在计算机设备中,可通过执行缓存控制方法来进行缓存控制。如图5所示,该装置包括:
检测模块501,用于检测第一数据的缓存事件是否被触发;
淘汰模块502,用于在检测到第一数据的缓存事件被触发时,若确定所述第一数据为新增数据,且缓存空间中的第一区域已达到对应的存储上限,则将所述第一区域的尾部位置所存储的第二数据淘汰,其中,所述缓存空间中包含至少两个区域,所述第一区域为所述至少两个区域中对应的命中次数最小的区域,所述命中次数包括所述缓存空间中的同一个数据被重复访问的次数;
缓存控制模块503,用于将所述第一数据存入所述第一区域的头部位置。
本发明实施例中提供的缓存控制装置,在缓存空间中依据所对应的命中次数的大小设置至少两个区域,在检测到作为新增数据的第一数据的缓存事件被触发时,若缓存空间中对应命中次数最小的第一区域已达到对应的存储上限,则将第一区域的尾部位置所存储的第二数据淘汰,并将第一数据存入第一区域的头部位置。通过采用上述技术方案,对缓存区域进行划分,当新增数据时,先存入对应命中次数最小的区域,若该区域已满,则从该区域内部进行数据淘汰,不会影响到其他对应命中次数较大的区域中的数据,从而对命中次数较多的数据进行保护,可有效避免热门数据因大批量新数据集中存入而被淘汰。
在一些实施例中,所述至少两个区域中的每个区域对应至少一个命中次数,所述至少两个区域依据所对应的最小命中次数降序排列,所述第一区域对应的最小命中次数为0。
在一些实施例中,所述缓存控制模块还用于:在所述检测到第一数据的缓存事件被触发之后,若确定所述第一数据已存储于第二区域中,则将所述第一数据移动存储至所述第二区域的对应位置,其中,所述第二区域为所述至少两个区域中的首位区域。
在一些实施例中,所述将所述第一数据移动存储至所述第二区域的对应位置,包括:
在所述第一数据对应的当前命中次数大于或等于所述第二区域对应的最大命中次数时,将所述第一数据移动存储至所述第二区域的头部位置。
在一些实施例中,所述缓存控制模块还用于:若所述第一数据对应的当前命中次数小于所述第二区域对应的最大的命中次数,则将所述第一数据移动存储至所述第二区域中与所述当前命中次数对应的位置。
在一些实施例中,所述缓存控制模块还用于:在所述检测到第一数据的缓存事件被触发之后,若确定所述第一数据已存储于第三区域中,则判断所述第一数据对应的当前命中次数是否等于第四区域对应的最小命中次数,若是,则将所述第一数据移动存储至所述第四区域,其中,所述第三区域包括所述至少两个区域中的除首位区域之外的区域,所述第四区域包括与所述第三区域相邻并位于所述第三区域之前的区域。
在一些实施例中,所述将所述第一数据移动存储至所述第四区域,包括:
当所述第四区域已达到对应的存储上限时,将所述第一数据移动存储至所述第四区域,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域。
在一些实施例中,所述将所述第一数据移动存储至所述第四区域,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域,包括:
将所述第一数据移动存储至所述第四区域的尾部位置,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域的头部位置。
在一些实施例中,所述缓存控制模块还用于:
若所述第一数据对应的当前命中次数小于所述第四区域对应的最小命中次数,则将所述第一数据移动存储至所述第三区域中与所述当前命中次数对应的位置。
在一些实施例中,所述至少两个区域的总数量以及每个区域对应的容量,根据所述缓存空间的总容量以及所述缓存空间对应的客户端的历史数据访问记录中样本数据的热度确定。
在一些实施例中,所述至少两个区域的总数量以及每个区域对应的容量,根据所述缓存空间的总容量以及所述缓存空间对应的客户端的历史数据访问记录中样本数据的热度确定,包括:所述至少两个区域中的每个区域对应一个命中次数;依据所述至少两个区域对应的初始容量进行区域划分;对于所述至少两个区域中的当前区域,将从当前区域被移动存储至上一区域的样本数据记为目标样本数据,其中,所述上一区域为与所述当前区域相邻并位于所述当前区域之前的区域;对于每个目标样本数据,获取当前目标样本数据从进入所述当前区域至被移动存储至上一区域之间,被访问的其他样本数据的第一数量;根据所有目标样本数据的第一数量确定第一中间数量;所述当前区域对应的目标容量与所述总容量的第一比值,大于或等于所述第一中间数量与所述样本数据的总数量的第二比值,以所述当前区域对应的目标容量替换所述当前区域对应的初始容量。
本发明实施例还提供一种包含计算机可执行指令的存储介质,所述计算机可执行指令在由计算机处理器执行时用于执行本发明实施例提供的缓存控制方法。
存储介质——任何的各种类型的存储器设备或存储设备。术语“存储介质”旨在包括:安装介质,例如CD-ROM、软盘或磁带装置;计算机系统存储器或随机存取存储器,诸如DRAM、DDRRAM、SRAM、EDORAM,兰巴斯(Rambus)RAM等;非易失性存储器,诸如闪存、磁介质(例如硬盘或光存储);寄存器或其它相似类型的存储器元件等。存储介质可以还包括其它类型的存储器或其组合。另外,存储介质可以位于程序在其中被执行的第一计算机系统中,或者可以位于不同的第二计算机系统中,第二计算机系统通过网络(诸如因特网)连接到第一计算机系统。第二计算机系统可以提供程序指令给第一计算机用于执行。术语“存储介质”可以包括可以驻留在不同位置中(例如在通过网络连接的不同计算机系统中)的两个或更多存储介质。存储介质可以存储可由一个或多个处理器执行的程序指令(例如具体实现为计算机程序)。
本发明实施例提供了一种计算机设备,该计算机设备中可集成本发明实施例提供的缓存控制装置。图6为本发明实施例提供的一种计算机设备的结构框图。计算机设备600包括存储器601、处理器602及存储在存储器601上并可在处理器602上运行的计算机程序,所述处理器602执行所述计算机程序时实现本发明实施例提供的缓存控制方法。
上述实施例中提供的缓存控制装置、存储介质以及计算机设备可执行本发明任意实施例所提供的缓存控制方法,具备执行该方法相应的功能模块和有益效果。未在上述实施例中详尽描述的技术细节,可参见本发明任意实施例所提供的缓存控制方法。
注意,上述仅为本发明的较佳实施例。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由权利要求范围决定。
Claims (14)
1.一种缓存控制方法,其特征在于,包括:
检测到第一数据的缓存事件被触发;
若确定所述第一数据为新增数据,且缓存空间中的第一区域已达到对应的存储上限,则将所述第一区域的尾部位置所存储的第二数据淘汰,其中,所述缓存空间中包含至少两个区域,所述第一区域为所述至少两个区域中对应的命中次数最小的区域,所述命中次数包括所述缓存空间中的同一个数据被重复访问的次数;
将所述第一数据存入所述第一区域的头部位置;
其中,在所述将所述第一数据存入所述第一区域的头部位置之前,将所述第一区域中的各数据顺次向尾部位置移动存储,将头部位置空出;
在所述检测到第一数据的缓存事件被触发之后,还包括:若确定所述第一数据已存储于第二区域中,则将所述第一数据移动存储至所述第二区域的对应位置,其中,所述第二区域为所述至少两个区域中的首位区域,所述对应位置包括头部位置。
2.根据权利要求1所述的方法,其特征在于,包括:
所述至少两个区域中的每个区域对应至少一个命中次数,所述至少两个区域依据所对应的最小命中次数降序排列,所述第一区域对应的最小命中次数为0。
3.根据权利要求1所述的方法,其特征在于,所述将所述第一数据移动存储至所述第二区域的对应位置,包括:
在所述第一数据对应的当前命中次数大于或等于所述第二区域对应的最大命中次数时,将所述第一数据移动存储至所述第二区域的头部位置。
4.根据权利要求1所述的方法,其特征在于,所述将所述第一数据移动存储至所述第二区域的对应位置,还包括:
若所述第一数据对应的当前命中次数小于所述第二区域对应的最大的命中次数,则将所述第一数据移动存储至所述第二区域中与所述当前命中次数对应的位置。
5.根据权利要求2所述的方法,其特征在于,在所述检测到第一数据的缓存事件被触发之后,还包括:
若确定所述第一数据已存储于第三区域中,则判断所述第一数据对应的当前命中次数是否等于第四区域对应的最小命中次数,若是,则将所述第一数据移动存储至所述第四区域,其中,所述第三区域包括所述至少两个区域中的除首位区域之外的区域,所述第四区域包括与所述第三区域相邻并位于所述第三区域之前的区域。
6.根据权利要求5所述的方法,其特征在于,所述将所述第一数据移动存储至所述第四区域,包括:
当所述第四区域已达到对应的存储上限时,将所述第一数据移动存储至所述第四区域,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域。
7.根据权利要求6所述的方法,其特征在于,所述将所述第一数据移动存储至所述第四区域,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域,包括:
将所述第一数据移动存储至所述第四区域的尾部位置,并将所述第四区域的尾部位置所存储的第三数据移动存储至所述第三区域的头部位置。
8.根据权利要求5所述的方法,其特征在于,还包括:
若所述第一数据对应的当前命中次数小于所述第四区域对应的最小命中次数,则将所述第一数据移动存储至所述第三区域中与所述当前命中次数对应的位置。
9.根据权利要求1所述的方法,其特征在于,所述至少两个区域的总数量以及每个区域对应的容量,根据所述缓存空间的总容量以及所述缓存空间对应的客户端的历史数据访问记录中样本数据的热度确定。
10.根据权利要求9所述的方法,其特征在于,所述至少两个区域的总数量以及每个区域对应的容量,根据所述缓存空间的总容量以及所述缓存空间对应的客户端的历史数据访问记录中样本数据的热度确定,包括:
所述至少两个区域中的每个区域对应一个命中次数;依据所述至少两个区域对应的初始容量进行区域划分;对于所述至少两个区域中的当前区域,将从当前区域被移动存储至上一区域的样本数据记为目标样本数据,其中,所述上一区域为与所述当前区域相邻并位于所述当前区域之前的区域;对于每个目标样本数据,获取当前目标样本数据从进入所述当前区域至被移动存储至上一区域之间,被访问的其他样本数据的第一数量;根据所有目标样本数据的第一数量确定第一中间数量;所述当前区域对应的目标容量与所述总容量的第一比值,大于或等于所述第一中间数量与所述样本数据的总数量的第二比值,以所述当前区域对应的目标容量替换所述当前区域对应的初始容量。
11.根据权利要求1-10中任一项所述的方法,其特征在于,所述检测到第一数据的缓存事件被触发,包括:
检测到视频客户端针对第一视频数据发出访问请求。
12.一种缓存控制装置,其特征在于,包括:
检测模块,用于检测第一数据的缓存事件是否被触发;
淘汰模块,用于在检测到第一数据的缓存事件被触发时,若确定所述第一数据为新增数据,且缓存空间中的第一区域已达到对应的存储上限,则将所述第一区域的尾部位置所存储的第二数据淘汰,其中,所述缓存空间中包含至少两个区域,所述第一区域为所述至少两个区域中对应的命中次数最小的区域,所述命中次数包括所述缓存空间中的同一个数据被重复访问的次数;
缓存控制模块,用于将所述第一数据存入所述第一区域的头部位置;
其中,在所述将所述第一数据存入所述第一区域的头部位置之前,将所述第一区域中的各数据顺次向尾部位置移动存储,将头部位置空出;
所述缓存控制模块还用于:在所述检测到第一数据的缓存事件被触发之后,若确定所述第一数据已存储于第二区域中,则将所述第一数据移动存储至所述第二区域的对应位置,其中,所述第二区域为所述至少两个区域中的首位区域,所述对应位置包括头部位置。
13.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-11中任一所述的方法。
14.一种计算机设备,包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1-11任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010086059.2A CN111309650B (zh) | 2020-02-11 | 2020-02-11 | 缓存控制方法、装置、存储介质及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010086059.2A CN111309650B (zh) | 2020-02-11 | 2020-02-11 | 缓存控制方法、装置、存储介质及设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111309650A CN111309650A (zh) | 2020-06-19 |
CN111309650B true CN111309650B (zh) | 2024-01-05 |
Family
ID=71154484
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010086059.2A Active CN111309650B (zh) | 2020-02-11 | 2020-02-11 | 缓存控制方法、装置、存储介质及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111309650B (zh) |
Families Citing this family (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN111752905B (zh) * | 2020-07-01 | 2024-04-09 | 浪潮云信息技术股份公司 | 一种基于对象存储的大文件分布式缓存系统 |
CN112269947B (zh) * | 2020-09-23 | 2024-09-13 | 咪咕文化科技有限公司 | 空间文本数据的缓存方法、装置、电子设备及存储介质 |
CN112948444A (zh) * | 2021-04-07 | 2021-06-11 | 北京电解智科技有限公司 | 一种缓存数据的管理方法和装置 |
CN113805805B (zh) * | 2021-05-06 | 2023-10-13 | 北京奥星贝斯科技有限公司 | 缓存内存块的淘汰方法、装置及电子设备 |
US11977485B2 (en) | 2021-05-13 | 2024-05-07 | Samsung Electronics Co., Ltd. | Method of cache management based on file attributes, and cache management device operating based on file attributes |
CN114296635B (zh) * | 2021-12-03 | 2023-11-03 | 北京易捷思达科技发展有限公司 | 缓存数据的缓存淘汰方法、装置、终端及存储介质 |
CN118213045A (zh) * | 2024-02-07 | 2024-06-18 | 深圳市慧医合创科技有限公司 | 影像数据存储方法、系统、介质及计算机设备 |
CN117909258B (zh) * | 2024-03-18 | 2024-05-14 | 北京开源芯片研究院 | 一种处理器缓存的优化方法、装置、电子设备及存储介质 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090852A (zh) * | 2014-07-03 | 2014-10-08 | 华为技术有限公司 | 管理混合缓存的方法及设备 |
CN106897030A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种缓存数据管理方法及装置 |
CN108763103A (zh) * | 2018-05-24 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种内存管理方法、装置、系统及计算机可读存储介质 |
CN109359095A (zh) * | 2018-09-11 | 2019-02-19 | 东华大学 | 一种大数据快速读取的dlk方法 |
CN110377572A (zh) * | 2019-07-18 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种缓存空间管理方法、装置、设备及介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10496541B2 (en) * | 2017-11-29 | 2019-12-03 | Samsung Electronics Co., Ltd. | Dynamic cache partition manager in heterogeneous virtualization cloud cache environment |
-
2020
- 2020-02-11 CN CN202010086059.2A patent/CN111309650B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104090852A (zh) * | 2014-07-03 | 2014-10-08 | 华为技术有限公司 | 管理混合缓存的方法及设备 |
CN106897030A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种缓存数据管理方法及装置 |
CN108763103A (zh) * | 2018-05-24 | 2018-11-06 | 郑州云海信息技术有限公司 | 一种内存管理方法、装置、系统及计算机可读存储介质 |
CN109359095A (zh) * | 2018-09-11 | 2019-02-19 | 东华大学 | 一种大数据快速读取的dlk方法 |
CN110377572A (zh) * | 2019-07-18 | 2019-10-25 | 腾讯科技(深圳)有限公司 | 一种缓存空间管理方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111309650A (zh) | 2020-06-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111309650B (zh) | 缓存控制方法、装置、存储介质及设备 | |
EP3229142B1 (en) | Read cache management method and device based on solid state drive | |
US9882975B2 (en) | Method and apparatus for buffering and obtaining resources, resource buffering system | |
CN108763110B (zh) | 一种数据缓存方法及装置 | |
US9361232B2 (en) | Selectively reading data from cache and primary storage | |
US8868863B2 (en) | Method and apparatus for a frugal cloud file system | |
US20140258375A1 (en) | System and method for large object cache management in a network | |
US20110276623A1 (en) | File bundling for cache servers of content delivery networks | |
US20170371807A1 (en) | Cache data determining method and apparatus | |
CN107430551B (zh) | 数据缓存方法、存储控制装置、及存储设备 | |
US20050172076A1 (en) | System for managing distributed cache resources on a computing grid | |
US9021208B2 (en) | Information processing device, memory management method, and computer-readable recording medium | |
KR20140097924A (ko) | 우선 순위를 가지는 이중 캐싱 방법 및 이를 위한 장치 | |
US20150331633A1 (en) | Method and system of caching web content in a hard disk | |
CN115794366A (zh) | 一种内存预取方法及装置 | |
CN109582233A (zh) | 一种数据的缓存方法和装置 | |
US9858204B2 (en) | Cache device, cache system, and cache method | |
JPH07239808A (ja) | 分散データ管理方式 | |
JP5192506B2 (ja) | ファイルキャッシュの管理方法、装置、及び、プログラム | |
CN112925472A (zh) | 请求处理方法、装置、电子设备及计算机存储介质 | |
CN116028389A (zh) | 热点数据缓存方法、装置、设备及介质 | |
CN115563029A (zh) | 一种基于两层缓存结构的缓存方法及装置 | |
JP2020522078A (ja) | データアクセス方法および装置 | |
JP2001318902A (ja) | キャッシュ装置 | |
CN116662219A (zh) | 从存储装置中动态预取数据 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |