CN107577618B - 一种三路均衡缓存淘汰方法及装置 - Google Patents
一种三路均衡缓存淘汰方法及装置 Download PDFInfo
- Publication number
- CN107577618B CN107577618B CN201710822189.6A CN201710822189A CN107577618B CN 107577618 B CN107577618 B CN 107577618B CN 201710822189 A CN201710822189 A CN 201710822189A CN 107577618 B CN107577618 B CN 107577618B
- Authority
- CN
- China
- Prior art keywords
- cache
- list
- hotspot
- access
- queue
- 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
Images
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本发明适用于缓存技术领域,提供一种三路均衡缓存淘汰方法及装置,本发明提供的三路均衡缓存淘汰方法以最近最常使用为原则,同时兼顾访问频率和次数,将最近访问、当前热点、历史热点分别用3个不同淘汰策略的数据结构存储,并规定了三者之间的转换条件,增强了算法适应性和灵敏度,减弱偶发或周期操作对缓存的影响,能够有效应对一些突发情况,以解决因部分干扰因素导致缓存命中率降低的问题。
Description
技术领域
本发明属于缓存技术领域,尤其涉及一种三路均衡缓存淘汰方法及装置。
背景技术
缓存是用来加快响应速度,减少服务器或数据库服务负载的一种方式,也是常用的以空间换取时间的性能优化策略。为进一步提高响应的时间,内存型缓存得到了广泛应用,但碍于计算机硬件等条件,内存型缓存的容量不可以无限增加,缓存总容量往往是固定的,并通过缓存机制的算法,实现对有限缓存空间的管理,以提高缓存的命中率。
目前缓存淘汰的常用算法有先进先出算法(FIFO)、最不经常使用算法(LFU)、最近最少使用算法(LRU)及变种、时钟算法(Clock)及变种、双队列(2Q)、多级最近最少使用队列(MQ)等。
这些常用缓存淘汰算法普遍受限于特定的应用场景,适应性不强。FIFO算法和Clock算法只对最近的热点有效,但热点很容易被淘汰,适用范围较小;LFU算法能有效保留历史热点,但如果热点发生了变化,需要大量的数据才能改变热点分布,灵活性较差;LRU算法和2Q算法考虑到了最近最常使用的缓存,但不能很好的保留历史访问热点,面对突发性或周期性的批量操作,会淘汰热点,导致缓存污染比较严重;MQ由多级LRU队列构成,算法实现的代价较大,命中率的提高跟队列的层级关联,算法的复杂度高。
发明内容
鉴于上述问题,本发明的目的在于提供一种三路均衡缓存淘汰方法及装置,旨在解决现有缓存淘汰算法存在明显的局限性、适应性较差、无法应对多种情况的技术问题。
一方面,所述三路均衡缓存淘汰方法包括下述步骤:
构建最近访问列表、当前热点集合和历史热点队列;
当接收到访问指令时,查找所述当前热点集合、历史热点队列和最近访问列表;
若待访问缓存在所述当前热点集合中,则直接调用访问;
若待访问缓存在所述最近访问列表中,则进一步判断该缓存是否在列表表头,若在列表表头,则将该缓存从最近访问列表中移除并加入当前热点集合,若不在列表表头,则将该缓存移至列表表头;
若待访问缓存在所述历史热点队列中,则将该缓存移至所述当前热点集合;
若缓存是第一次访问,则将缓存加入所述最近访问列表;
如果缓存加入最近访问列表时列表已满,从最近访问列表中删除一个缓存;
如果缓存加入当前热点集合时集合已满,将当前热点集合中访问频率最低的缓存删除并加入到历史热点队列中;
如果缓存加入历史热点队列时队列已满,删除历史热点队列中访问次数最少的缓存。
另一方面,所述三路均衡缓存淘汰装置包括:
存储构建模块,构建最近访问列表、当前热点集合和历史热点队列;
缓存查找模块,用于当接收到访问指令时,查找所述当前热点集合、历史热点队列和最近访问列表;
第一处理模块,用于当待访问缓存在所述当前热点集合中时,直接调用访问;以及用于如果缓存加入当前热点集合时集合已满,将当前热点集合中访问频率最低的缓存删除并加入到历史热点队列中;
第二处理模块,用于当待访问缓存在所述最近访问列表中时,进一步判断该缓存是否在列表表头,若在列表表头,则将该缓存从最近访问列表中移除并加入当前热点集合,若不在列表表头,则将该缓存移至列表表头;以及用于当缓存是第一次访问,将缓存加入所述最近访问列表;还用于如果缓存加入最近访问列表时列表已满,从最近访问列表中删除一个缓存;
第三处理模块,用于当待访问缓存在所述历史热点队列中时,将该缓存移至所述当前热点集合;以及用于如果缓存加入历史热点队列时队列已满,删除历史热点队列中访问次数最少的缓存。
本发明的有益效果是:本发明提供的三路均衡缓存淘汰算法以最近最常使用为原则,同时兼顾访问频率和次数,将最近访问、当前热点、历史热点分别用3个不同淘汰策略的数据结构存储,并规定了三者之间的转换条件,增强了算法适应性和灵敏度,减弱偶发或周期操作对缓存的影响,能够有效应对一些突发情况,以解决因部分干扰因素导致缓存命中率降低的问题。
附图说明
图1是本发明第一实施例提供的三路均衡缓存淘汰方法的流程图;
图2是三路均衡缓存淘汰算法示意图;
图3是本发明第二实施例提供的三路均衡缓存淘汰装置的结构方框图。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
为了说明本发明所述的技术方案,下面通过具体实施例来进行说明。
实施例一:
如图1、2所示,本实施提供的三路均衡缓存淘汰方法包括下述步骤:
步骤S1、构建最近访问列表、当前热点集合和历史热点队列。
这里所述最近访问列表用于缓存最近访问的数据,所述当前热点集合用于缓存访问频率较高的数据,所述历史热点队列用于缓存曾经是访问热点的数据。
本发明算法将最近访问、当前热点、历史热点分别用3个不同淘汰策略的数据结构存储,并规定了三者之间的转换条件。三者之间的具体转换条件和淘汰策略在后续步骤中有具体描述。
步骤S2、当接收到访问指令时,查找所述当前热点集合、历史热点队列和最近访问列表。
当需要访问缓存时,首先在这三个数据结构中查找。
步骤S3、若待访问缓存在所述当前热点集合中,则直接调用访问。
当待访问缓存在当前热点集合中,说明待访问缓存是高频率访问的对象,直接在当前热点集合中调用访问,十分迅速。
步骤S4、若待访问缓存在所述最近访问列表中,则进一步判断该缓存是否在列表表头,若在列表表头,则将该缓存从最近访问列表中移除并加入当前热点集合,若不在列表表头,则将该缓存移至列表表头。
如果待访问缓存在所述最近访问列表中,且待访问缓存在列表表头,则方访问后将缓存从最近访问列表中淘汰并加入当前热点集合。若不在列表表头,则访问后将该缓存移至列表表头。
步骤S5、若待访问缓存在所述历史热点队列中,则将该缓存移至所述当前热点集合。
若查找得知待访问缓存在所述历史热点队列中,则访问后将该缓存移至当前热点集合中,以便下次快速访问。
步骤S6、若缓存是第一次访问,则将缓存加入所述最近访问列表。
如果在三个数据结构中未找到待访问缓存,则说明目前还未存储该缓存。因此需要从原服务器或者数据库中找到对应的数据,并加入所述最近访问列表。
实际上,如果访问列表时列表已满,此时还要加入缓存,那么需要从最近访问列表中删除一个缓存以便挪出空间。作为一种实现方式,将缓存加入所述最近访问列表的表头,如果最近访问列表已满,则从最近访问列表的表尾删除一个缓存。
从附图2可知,最近访问列表的表头缓存以及历史队列中的缓存都有可能移至当前热点集合中,如果缓存加入当前热点集合时集合已满,则需要将当前热点集合中访问频率最低的缓存淘汰并加入到历史热点队列中。本实施例中,通过记录缓存进入当前热点集合的时间和在当前热点集合中访问的次数,缓存在当前热点集合中生存的时间与访问次数的比值即为访问周期,值越大访问频率越低,越先被淘汰。
而经过当前热点集合淘汰的缓存移至历史热点队列时,若队列已满,则需要淘汰历史热点队列中访问次数最少的缓存。本实施例中,历史热点队列按照缓存总的访问次数从高到低排序,当历史热点队列需要删除缓存时,直接删除历史热点队列尾部的缓存。
本发明中,三路均衡缓存算法中最近访问列表、当前热点集合、历史热点队列的存储空间一般是定长的,根据数据访问的“二八定律”,最近访问列表长度R、当前热点集合长度C和历史热点队列长度P,推荐存在以下关系:
C=R/5;
P=R/2;
R的长度一般由数据和访问情况来确定。
本发明的三路均衡缓存算法为降低实现的成本,以空间代价换取更多的时间,所有缓存的详细信息和内容均存储在以查询条件为Key的HashMap中,在三路均衡缓存算法中仅使用Key的键值和必需的信息,当Key在缓存算法中淘汰时,需要从HashMap中删除对应的对象。最近访问列表(RAL)采用双向链表和哈希表的结构实现,利用链表插入和删除的代价小和哈希表查询快的优势,优化最近访问列表的时间复杂度为O(1)。当前热点集合(CHS)采用链表的Set存放,保证插入和删除的时间复杂度为O(1),遍历查找最小频率的时间复杂度为O(n)。历史热点队列(PHQ)利用TreeSet对象保存,TreeSet内部由红黑树结构实现,其排序的时间复杂度为O(log n)。三路均衡缓存算法(TWB)在最糟糕的情况下,其时间代价是O(n+2log n),考虑到算法中存储集合都是固定长度,最大的时间消耗是一个定值。
实施例二:
如图3所示,本发明实施例提供的三路均衡缓存淘汰装置,包括:
存储构建模块,构建最近访问列表、当前热点集合和历史热点队列;
缓存查找模块,用于当接收到访问指令时,查找所述当前热点集合、历史热点队列和最近访问列表;
第一处理模块,用于当待访问缓存在所述当前热点集合中时,直接调用访问;以及用于如果缓存加入当前热点集合时集合已满,将当前热点集合中访问频率最低的缓存删除并加入到历史热点队列中;
第二处理模块,用于当待访问缓存在所述最近访问列表中时,进一步判断该缓存是否在列表表头,若在列表表头,则将该缓存从最近访问列表中移除并加入当前热点集合,若不在列表表头,则将该缓存移至列表表头;以及用于当缓存是第一次访问,将缓存加入所述最近访问列表;还用于如果缓存加入最近访问列表时列表已满,从最近访问列表中删除一个缓存;
第三处理模块,用于当待访问缓存在所述历史热点队列中时,将该缓存移至所述当前热点集合;以及用于如果缓存加入历史热点队列时队列已满,删除历史热点队列中访问次数最少的缓存。
本实施例所述的各个功能模块对应实现了实施例一中的各个步骤。
第一处理模块主要负责当前热点集合的控制,最近访问列表的表头缓存以及历史队列中的缓存都有可能移至当前热点集合中,如果缓存加入当前热点集合时集合已满,则需要将当前热点集合中访问频率最低的缓存淘汰并加入到历史热点队列中。具体的,通过记录缓存进入当前热点集合的时间和在当前热点集合中访问的次数,缓存在当前热点集合中生存的时间与访问次数的比值即为访问周期,值越大访问频率越低,越先被淘汰。
第二处理模块主要负责最近访问列表的控制,当待访问缓存在所述最近访问列表中且位于表头,则控制表头缓存移至当前热点集合,若待访问缓存已在最近访问列表中但不位于表头,则控制该缓存移至表头。如果缓存是第一次访问,将缓存加入所述最近访问列表,如果缓存加入最近访问列表时列表已满,从最近访问列表中删除一个缓存。本实施例中,将缓存加入所述最近访问列表的表头,如果最近访问列表已满,则从最近访问列表的表尾删除一个缓存。
第三处理模块主要负责历史热点队列的控制,当待访问缓存在所述历史热点队列中时,将该缓存移至所述当前热点集合;如果当前热点集合淘汰的缓存加入历史热点队列时队列已满,删除历史热点队列中访问次数最少的缓存。具体的,历史热点队列按照缓存总的访问次数从高到低排序,当历史热点队列需要删除缓存时,直接删除历史热点队列尾部的缓存。
以上所述仅为本发明的较佳实施例而已,并不用以限制本发明,凡在本发明的精神和原则之内所作的任何修改、等同替换和改进等,均应包含在本发明的保护范围之内。
Claims (8)
1.一种三路均衡缓存淘汰方法,其特征在于,所述方法包括下述步骤:
构建最近访问列表、当前热点集合和历史热点队列;
当接收到访问指令时,查找所述当前热点集合、历史热点队列和最近访问列表;
若待访问缓存在所述当前热点集合中,则直接调用访问;
若待访问缓存在所述最近访问列表中,则进一步判断该缓存是否在列表表头,若在列表表头,则将该缓存从最近访问列表中移除并加入当前热点集合,若不在列表表头,则将该缓存移至列表表头;
若待访问缓存在所述历史热点队列中,则将该缓存移至所述当前热点集合;
若缓存是第一次访问,则将缓存加入所述最近访问列表;
其中,如果缓存加入最近访问列表时列表已满,从最近访问列表中删除一个缓存;
如果缓存加入当前热点集合时集合已满,将当前热点集合中访问频率最低的缓存删除并加入到历史热点队列中;亦即通过记录缓存进入当前热点集合的时间和在当前热点集合中访问的次数,缓存在当前热点集合中生存的时间与访问次数的比值即为访问周期,值越大访问频率越低,越先被淘汰;
如果缓存加入历史热点队列时队列已满,删除历史热点队列中访问次数最少的缓存。
2.如权利要求1所述三路均衡缓存淘汰方法,其特征在于,若缓存是第一次访问,则将缓存加入所述最近访问列表的表头,如果最近访问列表已满,则从最近访问列表的表尾删除一个缓存。
3.如权利要求1所述三路均衡缓存淘汰方法,其特征在于,历史热点队列按照缓存总的访问次数从高到低排序,当历史热点队列需要删除缓存时,直接删除历史热点队列尾部的缓存。
4.如权利要求1-3任一项所述三路均衡缓存淘汰方法,其特征在于,最近访问列表的长度为R,当前热点集合的长度为C,历史热点队列的长度为P,有如下关系:C=R/5,P=R/2。
5.一种三路均衡缓存淘汰装置,其特征在于,所述装置包括:
存储构建模块,构建最近访问列表、当前热点集合和历史热点队列;
缓存查找模块,用于当接收到访问指令时,查找所述当前热点集合、历史热点队列和最近访问列表;
第一处理模块,用于当待访问缓存在所述当前热点集合中时,直接调用访问;以及用于如果缓存加入当前热点集合时集合已满,将当前热点集合中访问频率最低的缓存删除并加入到历史热点队列中;所述第一处理模块中,通过记录缓存进入当前热点集合的时间和在当前热点集合中访问的次数,缓存在当前热点集合中生存的时间与访问次数的比值即为访问周期,值越大访问频率越低,越先被淘汰;
第二处理模块,用于当待访问缓存在所述最近访问列表中时,进一步判断该缓存是否在列表表头,若在列表表头,则将该缓存从最近访问列表中移除并加入当前热点集合,若不在列表表头,则将该缓存移至列表表头;以及用于当缓存是第一次访问,将缓存加入所述最近访问列表;还用于如果缓存加入最近访问列表时列表已满,从最近访问列表中删除一个缓存;
第三处理模块,用于当待访问缓存在所述历史热点队列中时,将该缓存移至所述当前热点集合;以及用于如果缓存加入历史热点队列时队列已满,删除历史热点队列中访问次数最少的缓存。
6.如权利要求5所述三路均衡缓存淘汰装置,其特征在于,所述第二处理模块中,若缓存是第一次访问,则将缓存加入所述最近访问列表的表头,如果最近访问列表已满,则从最近访问列表的表尾删除一个缓存。
7.如权利要求5所述三路均衡缓存淘汰装置,其特征在于,所述第三处理模块中,历史热点队列按照缓存总的访问次数从高到低排序,当历史热点队列需要删除缓存时,直接删除历史热点队列尾部的缓存。
8.如权利要求5-7任一项所述三路均衡缓存淘汰装置,其特征在于,最近访问列表的长度为R,当前热点集合的长度为C,历史热点队列的长度为P,有如下关系:C=R/5,P=R/2。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710822189.6A CN107577618B (zh) | 2017-09-13 | 2017-09-13 | 一种三路均衡缓存淘汰方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710822189.6A CN107577618B (zh) | 2017-09-13 | 2017-09-13 | 一种三路均衡缓存淘汰方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107577618A CN107577618A (zh) | 2018-01-12 |
CN107577618B true CN107577618B (zh) | 2020-09-29 |
Family
ID=61035977
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710822189.6A Active CN107577618B (zh) | 2017-09-13 | 2017-09-13 | 一种三路均衡缓存淘汰方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107577618B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108763110B (zh) * | 2018-03-22 | 2021-01-26 | 新华三技术有限公司 | 一种数据缓存方法及装置 |
CN109783402A (zh) * | 2018-12-28 | 2019-05-21 | 深圳竹云科技有限公司 | 一种动态调整缓存热点数据的方法 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102314397B (zh) * | 2011-09-23 | 2014-03-19 | 浙江大学 | 缓存数据块的处理方法 |
CN103514106B (zh) * | 2012-06-20 | 2016-06-22 | 北京神州泰岳软件股份有限公司 | 一种数据缓存方法 |
CN102945207A (zh) * | 2012-10-26 | 2013-02-27 | 浪潮(北京)电子信息产业有限公司 | 一种块级数据的缓存管理方法及系统 |
US20170034299A1 (en) * | 2013-12-25 | 2017-02-02 | Nec Corporation | Cash management device, cash management method, and program |
CN104834609B (zh) * | 2015-05-31 | 2017-12-22 | 上海交通大学 | 基于历史升降级频率的多级缓存方法 |
CN106657196B (zh) * | 2015-11-02 | 2020-07-24 | 华为技术有限公司 | 一种缓存内容淘汰方法及缓存装置 |
CN106776380A (zh) * | 2016-11-28 | 2017-05-31 | 清华大学 | 终端内容缓存替换方法及替换装置 |
CN106909515B (zh) * | 2017-02-11 | 2020-09-18 | 苏州浪潮智能科技有限公司 | 面向混合主存的多核共享末级缓存管理方法及装置 |
CN106897030A (zh) * | 2017-02-28 | 2017-06-27 | 郑州云海信息技术有限公司 | 一种缓存数据管理方法及装置 |
-
2017
- 2017-09-13 CN CN201710822189.6A patent/CN107577618B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN107577618A (zh) | 2018-01-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8010766B2 (en) | Increasing buffer locality during multiple table access operations | |
CN111159066A (zh) | 一种动态调整的缓存数据管理及淘汰方法 | |
CN108763110B (zh) | 一种数据缓存方法及装置 | |
US10430338B2 (en) | Selectively reading data from cache and primary storage based on whether cache is overloaded | |
US7711902B2 (en) | Area effective cache with pseudo associative memory | |
CN106844740B (zh) | 基于内存对象缓存系统的数据预读方法 | |
CN111309650B (zh) | 缓存控制方法、装置、存储介质及设备 | |
US20140143493A1 (en) | Bypassing a Cache when Handling Memory Requests | |
US20070245079A1 (en) | Method and apparatus for efficiently supporting multiple one-time table access operations in a hierarchical memory setting | |
US8443149B2 (en) | Evicting data from a cache via a batch file | |
CN113094392B (zh) | 数据缓存的方法和装置 | |
JPH05324471A (ja) | キャッシュ制御装置 | |
US11113195B2 (en) | Method, device and computer program product for cache-based index mapping and data access | |
CN108462736B (zh) | 一种面向QoS的云存储数据副本存储方法 | |
EP3588913B1 (en) | Data caching method, apparatus and computer readable medium | |
CN110990439A (zh) | 基于缓存的快速查询方法、装置、计算机设备及存储介质 | |
US20130290636A1 (en) | Managing memory | |
CN107577618B (zh) | 一种三路均衡缓存淘汰方法及装置 | |
CN115080459A (zh) | 缓存管理方法及装置、计算机可读存储介质 | |
CN113495854A (zh) | 主机-设备系统中实现或管理缓存一致性的方法和系统 | |
CN108459972B (zh) | 一种多通道固态硬盘的高效缓存管理设计方法 | |
RU2672726C1 (ru) | Способ выполнения упреждающего чтения в системах хранения данных | |
CN110413689B (zh) | 一种内存数据库的多节点数据同步方法与装置 | |
CN112650694B (zh) | 一种数据读取方法、装置、缓存代理服务器及存储介质 | |
CN111221773A (zh) | 一种基于rmda高速网络和跳表的数据存储架构方法 |
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 | ||
CP01 | Change in the name or title of a patent holder |
Address after: 430223 Wuda science and Technology Park, Jiangxia Avenue, Miaoshan community, Donghu Development Zone, Wuhan City, Hubei Province Patentee after: Geospace Information Technology Co.,Ltd. Address before: 430223 Wuda science and Technology Park, Jiangxia Avenue, Miaoshan community, Donghu Development Zone, Wuhan City, Hubei Province Patentee before: WUDA GEOINFORMATICS Co.,Ltd. |
|
CP01 | Change in the name or title of a patent holder |