CN106649150A - 一种缓存管理方法及装置 - Google Patents
一种缓存管理方法及装置 Download PDFInfo
- Publication number
- CN106649150A CN106649150A CN201611220285.5A CN201611220285A CN106649150A CN 106649150 A CN106649150 A CN 106649150A CN 201611220285 A CN201611220285 A CN 201611220285A CN 106649150 A CN106649150 A CN 106649150A
- Authority
- CN
- China
- Prior art keywords
- chained list
- resource
- caching
- resource identification
- request
- 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.)
- Granted
Links
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
Abstract
本发明提供一种缓存管理方法及装置,涉及通信技术领域,用于解决LRU算法中由于ADC内存缓存过小的原因大量首次访问的非热点资源将热点资源排挤出缓存链表中进而造成的热点资源访问时命中率下降的问题。该方法包括:若确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间已满;则将请求资源标识插入真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至虚拟缓存链表的首端,以及通过请求资源置换真实缓存链表末端的资源标识对应的缓存资源。本发明用于资源缓存的管理。
Description
技术领域
本发明涉及通信技术领域,尤其涉及一种缓存管理方法及装置。
背景技术
应用交付设备(英文名称:Application Delivery Controller,英文简称:ADC)是传统网络负载均衡的升级扩展,是一个综合了多种技术手段的应用交付平台。通过合理地部署ADC,用户可以进一步改善业务性能,提高业务服务器的效率。其中,内存缓存就是ADC针对网页(英文名称:WEB)应用服务器性能优化的重要技术之一。ADC的缓存系统可以代替应用服务器响应部分可以被缓存的热点数据,如静态页面、图像、文件等资源,从而大大减少应用服务器的连接压力、流量压力和性能压力。热点资源缓存的访问命中率越高,则ADC的优化效果越好。ADC往往使用内存缓存技术来保障缓存响应性能。相比磁盘缓存,内存缓存技术具有更优秀的缓存响应性能,符合ADC性能优化的目标,因此被绝大多数ADC所使用。但内存缓存的不足在于,系统的内存容量往往是有限制的,因此限制了可被缓存的热点资源数量。当缓存满了以后,新资源需要将部分热点资源置换掉,从而使整体访问的缓存命中率下降。
现有技术中,为了解决系统整体访问的缓存命中率下降的问题,通常使用最近最少使用算法(英文名称:Least Recently Used,英文简称:LRU)进行缓存置换,其将资源按照最近访问时间组成一个链表。当一个缓存中的资源被访问时,该节点被从链表中摘下,并重新插入链表头部;当一个不在缓存中的新资源被访问时,链表末尾最久未被访问的资源被移除,新资源被插入到链表首部。但随着WEB应用的发展,很多WEB服务器的可缓存资源规模增大,图片、视频、文档等大容量资源的大量应用,使得ADC内存缓存空间远小于服务端数据总量。另一方面,热点资源占总资源比例变小且集中化,而其它大部分数据则不容易被短时间内重复访问。例如有些场景的统计数据显示,80%以上的数据访问量小于10,但占总访问70%以上。在这种场景下,LRU算法中由于ADC内存缓存过小的原因,大量首次访问的非热点资源将热点资源排挤出缓存链表中进而造成热点资源访问时命中率下降的问题。
发明内容
本发明的实施例提供一种缓存管理方法及装置,用于解决LRU算法中由于ADC内存缓存过小的原因大量首次访问的非热点资源将热点资源排挤出缓存链表中进而造成的热点资源访问时命中率下降的问题。
为达到上述目的,本发明的实施例采用如下技术方案:
第一方面,提供一种缓存管理方法,该方法包括:
若确定请求资源的请求资源标识不属于缓存链表内的资源标识且所述缓存链表中真实缓存链表的存储空间已满;则将所述请求资源标识插入所述真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至所述虚拟缓存链表的首端,以及通过所述请求资源置换所述真实缓存链表末端的资源标识对应的缓存资源;
其中,所述缓存链表包括所述真实缓存链表和虚拟缓存链表,所述真实缓存链表后续接所述虚拟缓存链表,所述真实缓存链表包括热点资源的链表和非热点资源的链表,所述热点资源的链表后续接所述非热点资源的链表。
第二方面,提供一种缓存管理装置,该装置包括:
查询模块,用于查询请求资源的请求资源标识是否属于缓存链表内的资源标识以及查询所述缓存链表中真实缓存链表的存储空间是否已满;
处理模块,用于在确定请求资源的请求资源标识不属于缓存链表内的资源标识且所述缓存链表中真实缓存链表的存储空间已满时,将所述请求资源标识插入所述真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至所述虚拟缓存链表的首端,以及通过所述请求资源置换所述真实缓存链表末端的资源标识对应的缓存资源;
其中,所述缓存链表包括所述真实缓存链表和虚拟缓存链表,所述真实缓存链表后续接所述虚拟缓存链表,所述真实缓存链表包括热点资源的链表和非热点资源的链表,所述热点资源的链表后续接所述非热点资源的链表。
本发明实施例提供的缓存管理方法包括:若确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间已满;则将请求资源标识插入真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至虚拟缓存链表的首端,以及通过请求资源置换真实缓存链表末端的资源标识对应的缓存资源;其中,缓存链表包括真实缓存链表和虚拟缓存链表,真实缓存链表后续接虚拟缓存链表,真实缓存链表包括热点资源的链表和非热点资源的链表,热点资源的链表后续接非热点资源的链表。通过在确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间已满时,系统可以判定请求访问的资源为首次访问,通过将该请求资源标识插入真实缓存链表中的非热点资源的链表的首端可以防止热点资源的链表的资源标识因为大量首次访问的请求资源标识进入而将热点资源排挤出缓存链表的问题,从而解决了LRU算法中由于ADC内存缓存过小的原因大量首次访问的非热点资源将热点资源排挤出缓存链表中进而造成的热点资源访问时命中率下降的问题。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明的实施例提供的缓存管理方法实现示意图之一;
图2为本发明的实施例提供的缓存管理方法处理流程图之一;
图3为本发明的实施例提供的缓存管理方法处理流程图之二;
图4为本发明的实施例提供的缓存管理方法实现示意图之二;
图5为本发明的实施例提供的缓存管理方法实现示意图之三;
图6为本发明的实施例提供的缓存管理方法实现示意图之四;
图7为本发明的实施例提供的缓存管理方法实现示意图之五;
图8为本发明的实施例提供的缓存管理装置示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本申请中的“A和/或B”表示三种选择:A,或者,B,或者,A和B。也即“和/或”即可以表示“和“的关系,也可以表示“或”的关系。
还需要说明的是,本申请中的“第一”、“第二”等字样仅仅是为了对功能和作用基本相同的相同项或相似项进行区分,“第一”、“第二”等字样并不是在对数量和执行次序进行限定。
本发明的实施例提供一种缓存管理方法,用于对缓存链表中的资源标识以及数据库中的缓存资源进行管理,参照图1所示,缓存链表包括真实缓存链表10和虚拟缓存链表11,真实缓存链表10后续接虚拟缓存链表11,真实缓存链表10包括热点资源的链表101和非热点资源的链表102,热点资源的链表101后续接非热点资源的链表102;数据库12中的缓存资源与真实缓存链表10中的资源标识一一对应。
具体的,数据库12中的缓存资源与真实缓存链表10中的资源标识通过指针一一对应,因此在缓存管理方法的具体实现中,当调整真实缓存链表10中的资源标识时,不需要对数据库12中的缓存资源进行移动。
本发明的实施例提供的缓存管理方法,参照图2所示,该方法包括:
S1、确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间已满。
具体的,缓存系统中的查询模块通过对缓存链表内的资源标识与请求资源标识进行查询,缓存系统的处理模块根据缓存链表内的资源标识与请求资源标识进行比对,在缓存链表内的资源标识具有与请求资源标识相同的资源标识时,确定请求资源的请求资源标识属于缓存链表内的资源标识,缓存系统中的处理模块判断缓存系统中的真实缓存链表是否已满,当缓存系统中的真实缓存链表已满,说明此时缓存系统中的缓存数据库已满。当缓存系统中的真实缓存链表未满,说明此时缓存系统中的缓存数据库仍有空间对访问资源进行存储。
S2、将请求资源标识插入真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至虚拟缓存链表的首端,以及通过请求资源置换真实缓存链表末端的资源标识对应的缓存资源。
具体的,当请求资源的请求资源标识不属于缓存链表内的资源标识时,缓存系统中的处理模块判定用户的访问资源的请求为首次访问,缓存系统作为代理从后端服务器获取请求访问的资源并将该资源发送至用户,缓存系统中的处理模块将后端服务器获取的请求访问数据与真实缓存链表中非热点资源的链表的末端的资源标识对应的缓存数据库存储的缓存资源进行置换,缓存系统中的处理模块将请求资源标识插入真实缓存链表中非热点资源的链表的首端,此时原先非热点资源的链表的末端的资源标识会被自动淘汰到虚拟缓存链表的首端。若虚拟缓存链表已满,则虚拟缓存链表末端的资源标识也会被自动淘汰。该请求资源标识通过指针与置换后的请求访问资源相对应,用户可以根据请求资源标识获取对应的请求访问资源。
确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间已满的情况下,系统可以判定请求访问的资源为首次访问,通过将该请求资源标识插入真实缓存链表中的非热点资源的链表的首端可以防止热点资源的链表的资源标识因为大量首次访问的请求资源标识进入而将热点资源排挤出缓存链表的问题,从而解决了LRU算法中由于ADC内存缓存过小的原因大量首次访问的非热点资源将热点资源排挤出缓存链表中进而造成的热点资源访问时命中率下降的问题。
为了使本领域的技术人员更好的理解上述方案,下面结合附图和具体实施例对本发明实施例中缓存管理方法作进一步的说明。
本发明的实施例提供的缓存管理方法,参照图3所示,该方法包括:
S01、接收访问请求。
具体的,缓存系统作为代理接收到用户访问WEB服务器资源的请求,该请求访问的资源为可缓存类型,例如网页上的图片和视频等可缓存的资源。
需要说明的是,对于不可缓存的资源本发明实施例提供的缓存管理方法不做处理。
S02、根据访问请求获取请求资源标识。
具体的,缓存系统在接收到用户访问WEB服务器资源的请求,根据访问资源的URI,计算哈希值并通过哈希值获取请求资源标识,其中哈希值是通过哈希算法计算,哈希算法将任意长度的二进制值映射为固定长度的较小二进制值,这个小的二进制值称为哈希值。
可选的,资源标识包括统一资源标识符和/或统一资源标识符的值。
S03、判断请求资源的请求资源标识是否属于缓存链表内的资源标识。
具体的,缓存系统中的处理模块通过对缓存链表内的资源标识与请求资源标识进行比对,判断缓存链表内的资源标识是否包含请求资源标识,即请求资源的请求资源标识是否属于缓存链表内的资源标识。
需要说明的是,在具体的实现上,真实缓存链表和虚拟缓存链表可以组成一条实际的物理链表,在此基础上增加了各个逻辑区间的大小定义和定位并可以对逻辑链表进行上下链操作。这样将一个节点的请求资源标识从某个逻辑链表摘下并插入热点资源的链表或非热点资源的链表首端时,可以很自然地将一个区间的链表末端资源标识淘汰到下一个链表首端。
在步骤S03中,若请求资源的请求资源标识不属于缓存链表内的资源标识时,执行步骤S04。
S04、从后端服务器获取请求访问的资源并发送至用户。
具体的,当请求资源的请求资源标识不属于缓存链表内的资源标识时,说明缓存链表内的资源标识不具有与请求资源标识相同的资源标识,此时缓存系统中的处理模块判定用户的访问资源的请求为首次访问,缓存系统作为代理从后端服务器获取请求访问的资源并将该资源发送至用户。
S05、判断缓存链表中真实缓存链表的存储空间是否已满。
具体的,缓存系统中的查询模块判断缓存系统中的真实缓存链表是否已满,当缓存系统中的真实缓存链表已满,说明此时缓存系统中的缓存数据库已满。当缓存系统中的真实缓存链表未满,说明此时缓存系统中的缓存数据库仍有空间对访问资源进行存储。
在步骤S05中,若缓存链表中真实缓存链表的存储空间已满,执行步骤S06。
S06、获取请求访问的资源,将请求资源标识插入真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至虚拟缓存链表的首端,以及通过请求资源置换真实缓存链表末端的资源标识对应的缓存资源。
具体的,缓存系统中的处理模块将后端服务器获取的请求访问数据与真实缓存链表中非热点资源的链表的末端的请求资源标识对应的缓存数据库存储的缓存资源进行置换,缓存系统中的处理模块将请求资源标识插入真实缓存链表中非热点资源的链表的首端,此时原先非热点资源的链表的末端的资源标识会被自动淘汰到虚拟缓存链表的首端。若虚拟缓存链表已满,则虚拟缓存链表末端的资源标识也会被自动淘汰。该请求资源标识通过指针与置换后的请求访问资源相对应,用户可以根据请求资源标识获取对应的请求访问资源。
示例性的,参照图4所示,缓存链表分为真实缓存链表10以及虚拟缓存链表11,真实缓存链表10分为热点资源的链表101与非热点资源的链表102,数据库12用于存储真实缓存链表10中资源标识对应的缓存资源,该缓存资源包括A1、B1、C1、D1以及E1。当访问的请求资源标识G在缓存链表中没有对应的资源标识时,即请求资源的请求资源标识G不属于缓存链表内的资源标识,缓存链表内的资源标识不包含请求资源标识G,请求资源标识G对应的访问请求为首次访问时,其中缓存链表中的资源标识包括A、B、C、D、E、F,缓存系统的处理模块通过后端服务器获取的请求资源标识G对应的请求资源G1并将请求资源G1与真实缓存链表10末端的资源标识E对应的数据库12中存储的数据E1进行置换,之后处理模块将请求资源标识G插入非热点资源的链表102的首端,此时之前真实缓存链表10末端的资源标识E移动至虚拟缓存链表11的首端,虚拟缓存链表11首端的资源标识F向缓存链表末端移动一次。
可选的,非热点资源的链表的大小可以设置为真实缓存链表的5%-10%。
本发明实施例提供的缓存管理方法,在接收访问请求并根据访问请求获取请求资源标识后,通过在判定缓存链表内的资源标识不包含请求资源标识且真实缓存链表的存储空间已满的情况下,系统可以判定请求访问的资源为首次访问,通过将该请求资源标识插入非热点资源的链表的首端可以防止热点资源的链表的资源标识因为大量首次访问的请求资源标识进入而将热点资源排挤出缓存链表的问题,从而解决了LRU算法中由于ADC内存缓存过小的原因大量首次访问的非热点资源将热点资源排挤出缓存链表中进而造成的热点资源访问时命中率下降的问题。并且,与传统LRU算法进行对比可以发现,本发明实施例提供的缓存管理方法中调整一个缓存链表中一个资源标识位置的操作,和LRU使用单链表的方式对一个节点进行置换和调整的操作具有相同效率,都是一次哈希、一次摘取节点和一次添加节点的行为,并没有在显著增加计算复杂度的前提下达到提升缓存命中率的目的。
可选的,本发明实施例提供的缓存管理方法,参照图3所示,在步骤S03中,若请求资源的请求资源标识属于缓存链表内的资源标识,执行步骤S07。
S07、判断请求资源标识是否属于真实缓存链表。
具体的,当缓存链表内的资源标识具有与请求资源标识相同的资源标识时,缓存系统中的处理模块还用于判断请求资源标识是否属于真实缓存链表。
在步骤S07中,若确定请求资源标识属于真实缓存链表,执行步骤S08,若确定请求资源标识不属于真实缓存链表,即请求资源标识属于虚拟缓存链表,执行步骤S10。
S08、查询请求资源标识对应的请求访问资源并将该资源发送至用户。
具体的,当请求资源标识属于真实缓存链表时,缓存系统中的处理模块直接查询数据库中请求资源标识对应的缓存数据并将该数据发送至用户。
S09、将真实缓存链表内的请求资源标识移动至热点资源的链表的首端。
具体的,缓存系统中的处理模块将真实缓存链表中的请求资源标识移动至真实缓存链表热点资源的链表首端,此时之前的资源标识相当于依次向缓存链表末端移动了一次。
示例性的,参照图5所示,当访问的请求资源标识E在真实缓存链表10中有对应的资源标识时,即请求资源标识E属于真实缓存链表10时,其中真实缓存链表的资源标识包括A、B、C、D、E,缓存系统的处理模块将真实缓存链表10中请求资源标识E重新插入真实缓存链表10的首端,数据库12中的缓存资源A1、B1、C1、D1、E1保持不变,此时在真实缓存链表10中之前在请求资源标识E上端的资源标识依次向缓存链表末端移动一次。
S10、从后端服务器获取请求访问的资源并将该资源发送至用户。
具体的,当请求资源标识不属于真实缓存链表,即该请求资源标识属于虚拟缓存链表时,该请求资源标识在数据库中没有存储对应的访问资源,缓存系统中的处理模块从后端服务器获取请求访问的资源并将该资源发送至用户。
S11、将虚拟缓存链表内的请求资源标识移动至热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至虚拟缓存链表的首端,以及通过请求资源置换真实缓存链表末端的资源标识对应的缓存资源。
具体的,缓存系统中的处理模块将请求访问的资源与真实缓存链表中非热点资源的链表的末端的请求资源标识对应的缓存数据库存储的缓存资源进行置换后,处理模块将请求资源标识移动至插入真实缓存链表中热点资源的链表的首端,此时原先缓存链表中的资源标识会依次向缓存链表末端移动一次,真实缓存链表末端的资源标识会移动到虚拟缓存链表的首端。
示例性的,参照图6所示,当访问的请求资源标识F在虚拟缓存链表11中有对应的资源标识时,即请求资源标识F属于虚拟缓存链表11时,其中缓存链表的资源标识包括A、B、C、D、E、F,数据库12中的缓存数据包括A1、B1、C1、D1、E1,缓存系统的处理模块从后端服务器获取请求资源标识F对应的请求资源F1并将请求资源F1与真实缓存链表10末端的资源标识E对应的数据库12中存储的数据E1进行置换,之后处理模块将请求资源标识F插入真实缓存链表10的首端,此时之前缓存链表中资源标识F上端的资源标识依次向缓存链表末端移动一次,资源标识E移动至虚拟缓存链表11的首端。
进一步的,因为虚拟缓存链表的长度会影响最终的缓存命中率,若长度太小则可识别的热点资源标识变少,若长度太大则真正的热点资源被淘汰的几率变大,虚拟缓存链表的长度可以设置为真实缓存链表长度的1-1.2倍。
需要说明的是,缓存命中率的计算方法为命中真实缓存链表的计数除以缓存系统接收到总的访问请求计数。
通过在请求资源标识属于虚拟缓存链表的情况下,可以判定该请求资源标识在一定的周期内被重复访问了,其对应的请求访问资源被识别为热点资源。在LRU算法中,由于其记录周期就是实际缓存大小,被淘汰的资源若被再次访问,只能按照首次访问处理。虚拟缓存链表则相当于扩展了记录周期,便于在更长的访问间隔内识别热点资源。
可选的,本发明实施例提供的缓存管理方法,参照图3所示,在步骤S05中,若确定真实缓存链表的存储空间未满,执行步骤S12。
S123、获取请求访问的资源,将请求资源标识插入热点资源的链表的首端,以及将请求资源进行缓存。请求资源标识插入的首端以及将请求访问的资源缓存入数据库中。
具体的,缓存系统中的处理模块从后端服务器获取请求访问的资源并将该资源放入缓存数据库中,之后将请求资源标识插入热点资源的链表的首端,原先真实缓存链表中的资源标识会依次向缓存链表末端移动一次,由于真实缓存链表未满,其对应的数据库中的数据也未满,所以并没有实际的缓存数据被淘汰,此时的算法逻辑与LRU算法是相同的。
示例性的,参照图7所示,当访问的请求资源标识E在缓存链表中没有对应的资源标识时,即请求资源标识E不属于缓存链表内的资源标识时,请求资源标识E对应的访问请求为首次访问,其中缓存链表的资源标识包括A、B、C、D,数据库12中的缓存资源包括A1、B1、C1、D1,缓存系统的处理模块从后端服务器获取请求资源标识E对应的请求资源E1并将请求资源E1存入数据库12中,之后处理模块将请求资源标识E插入真实缓存链表10的首端,此时之前缓存链表中的资源标识依次向缓存链表末端移动一次。
当确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间未满时,将首次访问的请求资源标识插入缓存链表的热点资源的链表首部,并在缓存数据库存储对应的请求访问资源,由于真实链表未满,该缓存链表对应的存储数据库也未满,并没有实际的缓存数据在数据库中被淘汰,用户可以在下次访问时,系统准确定位热点访问资源并向用户发送该资源,从而提高了首次访问资源的命中率。
本发明再一实施例提供一种缓存管理装置,参照图8所示,该缓存管理装置10包括:
查询模块01,用于查询请求资源的请求资源标识是否属于缓存链表内的资源标识以及查询缓存链表中真实缓存链表的存储空间是否已满;
处理模块02,用于在确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间已满时,将请求资源标识插入真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至虚拟缓存链表的首端,以及通过请求资源置换真实缓存链表末端的资源标识对应的缓存资源;
其中,缓存链表包括真实缓存链表和虚拟缓存链表,真实缓存链表后续接虚拟缓存链表,真实缓存链表包括热点资源的链表和非热点资源的链表,热点资源的链表后续接非热点资源的链表。
可选的,资源标识包括统一资源标识符和/或统一资源标识符的值。
需要说明的是,缓存资源与真实缓存链表中的资源标识通过指针一一对应。
可选的,非热点资源的链表的大小可以设置为真实缓存链表的5%-10%。
本发明实施例提供的缓存管理装置,在查询模块确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间已满的情况下,系统可以判定请求访问的资源为首次访问,处理模块通过将该请求资源标识插入真实缓存链表中的非热点资源的链表的首端可以防止热点资源的链表的资源标识因为大量首次访问的请求资源标识进入而将热点资源排挤出缓存链表的问题,从而解决了LRU算法中由于ADC内存缓存过小的原因大量首次访问的非热点资源将热点资源排挤出缓存链表中进而造成的热点资源访问时命中率下降的问题。并且,与传统LRU算法进行对比可以发现,本发明实施例提供的缓存管理方法中调整一个缓存链表中一个资源标识位置的操作,和LRU使用单链表的方式对一个节点进行置换和调整的操作具有相同效率,都是一次哈希、一次摘取节点和一次添加节点的行为,并没有在显著增加计算复杂度的前提下达到提升缓存命中率的目的。
可选的,本发明实施例提供的缓存管理装置,处理模块还用于在确定请求资源标识属于真实缓存链表时,将真实缓存链表内的请求资源标识移动至热点资源的链表的首端;
处理模块还用于在确定请求资源标识属于虚拟缓存链表时,将虚拟缓存链表内的请求资源标识移动至热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至虚拟缓存链表的首端,以及通过请求资源置换真实缓存链表末端的资源标识对应的缓存资源。
可选的,因为虚拟缓存链表的长度会影响最终的缓存命中率,若长度太小则可识别的热点资源标识变少,若长度太大则真正的热点资源被淘汰的几率变大,虚拟缓存链表的长度可以设置为真实缓存链表长度的1-1.2倍。
通过在请求资源标识属于虚拟缓存链表的情况下,处理模块可以判定该请求资源标识在一定的周期内被重复访问了,其对应的请求访问资源被识别为热点资源。在LRU算法中,由于其记录周期就是实际缓存大小,被淘汰的资源若被再次访问,只能按照首次访问处理。虚拟缓存链表则相当于扩展了记录周期,便于在更长的访问间隔内识别热点资源。
可选的,本发明实施例提供的缓存管理装置,处理模块还用于在确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间未满时,将请求资源标识插入热点资源的链表的首端,以及将请求资源进行缓存。
当确定请求资源的请求资源标识不属于缓存链表内的资源标识且缓存链表中真实缓存链表的存储空间未满时,处理模块将首次访问的请求资源插入缓存链表的热点资源的链表的首部,并将请求访问的资源进行缓存,由于真实缓存链表未满,该缓存链表对应的存储数据库也未满,并没有实际的缓存数据在数据库中被淘汰,用户可以在下次访问时,系统准确定位热点访问资源并向用户发送该资源,从而提高了首次访问资源的命中率。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种缓存管理方法,其特征在于,
若确定请求资源的请求资源标识不属于缓存链表内的资源标识且所述缓存链表中真实缓存链表的存储空间已满;则将所述请求资源标识插入所述真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至所述虚拟缓存链表的首端,以及通过所述请求资源置换所述真实缓存链表末端的资源标识对应的缓存资源;
其中,所述缓存链表包括所述真实缓存链表和虚拟缓存链表,所述真实缓存链表后续接所述虚拟缓存链表,所述真实缓存链表包括热点资源的链表和非热点资源的链表,所述热点资源的链表后续接所述非热点资源的链表。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述请求资源标识属于真实缓存链表,则将所述真实缓存链表内的请求资源标识移动至所述热点资源的链表的首端;
若确定所述请求资源标识属于虚拟缓存链表,则将所述虚拟缓存链表内的请求资源标识移动至所述热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至所述虚拟缓存链表的首端,以及通过所述请求资源置换所述真实缓存链表末端的资源标识对应的缓存资源。
3.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若确定所述请求资源的请求资源标识不属于所述缓存链表内的资源标识且所述缓存链表中真实缓存链表的存储空间未满,则将所述请求资源标识插入所述热点资源的链表的首端,以及将所述请求资源进行缓存。
4.根据权利要求1-3任一项所述的方法,其特征在于,所述缓存资源与所述真实缓存链表内的资源标识通过指针一一对应。
5.根据权利要求1-3任一项所述的方法,其特征在于,所述资源标识包括:统一资源标识符和/或统一资源标识符的值。
6.一种缓存管理装置,其特征在于,所述装置包括:
查询模块,用于查询请求资源的请求资源标识是否属于缓存链表内的资源标识以及查询所述缓存链表中真实缓存链表的存储空间是否已满;
处理模块,用于在确定请求资源的请求资源标识不属于缓存链表内的资源标识且所述缓存链表中真实缓存链表的存储空间已满时,将所述请求资源标识插入所述真实缓存链表中的非热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至所述虚拟缓存链表的首端,以及通过所述请求资源置换所述真实缓存链表末端的资源标识对应的缓存资源;
其中,所述缓存链表包括所述真实缓存链表和虚拟缓存链表,所述真实缓存链表后续接所述虚拟缓存链表,所述真实缓存链表包括热点资源的链表和非热点资源的链表,所述热点资源的链表后续接所述非热点资源的链表。
7.根据权利要求6所述的装置,其特征在于,
所述处理模块还用于在确定所述请求资源标识属于真实缓存链表时,将所述真实缓存链表内的请求资源标识移动至所述热点资源的链表的首端;
所述处理模块还用于在确定所述请求资源标识属于虚拟缓存链表时,将所述虚拟缓存链表内的请求资源标识移动至所述热点资源的链表的首端,使原先非热点资源的链表的末端的资源标识移动至所述虚拟缓存链表的首端,以及通过所述请求资源置换所述真实缓存链表末端的资源标识对应的缓存资源。
8.根据权利要求6所述的装置,其特征在于,
所述处理模块还用于在确定所述请求资源的请求资源标识不属于所述缓存链表内的资源标识且所述缓存链表中真实缓存链表的存储空间未满时,将所述请求资源标识插入所述热点资源的链表的首端,以及将所述请求资源进行缓存。
9.根据权利要求6-8任一项所述的装置,其特征在于,所述缓存资源与所述真实缓存链表内的资源标识通过指针一一对应。
10.根据权利要求6-8任一项所述的装置,其特征在于,所述资源标识包括:统一资源标识符和/或统一资源标识符的值。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611220285.5A CN106649150B (zh) | 2016-12-26 | 2016-12-26 | 一种缓存管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201611220285.5A CN106649150B (zh) | 2016-12-26 | 2016-12-26 | 一种缓存管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106649150A true CN106649150A (zh) | 2017-05-10 |
CN106649150B CN106649150B (zh) | 2020-04-24 |
Family
ID=58828366
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201611220285.5A Active CN106649150B (zh) | 2016-12-26 | 2016-12-26 | 一种缓存管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106649150B (zh) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108038002A (zh) * | 2017-12-15 | 2018-05-15 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理方法 |
CN108132842A (zh) * | 2017-12-15 | 2018-06-08 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理系统 |
CN108334460A (zh) * | 2017-05-25 | 2018-07-27 | 中兴通讯股份有限公司 | 数据缓存方法及装置 |
CN109246229A (zh) * | 2018-09-28 | 2019-01-18 | 网宿科技股份有限公司 | 一种分发资源获取请求的方法和装置 |
CN113596513A (zh) * | 2021-08-02 | 2021-11-02 | 典基网络科技(上海)有限公司 | 一种视频内容分发方法及系统 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449695B1 (en) * | 1999-05-27 | 2002-09-10 | Microsoft Corporation | Data cache using plural lists to indicate sequence of data storage |
CN102117278A (zh) * | 2009-12-31 | 2011-07-06 | 联想(北京)有限公司 | 链表的创建方法及系统、数据的查找方法及系统 |
CN103049399A (zh) * | 2012-12-31 | 2013-04-17 | 北京北大众志微系统科技有限责任公司 | 一种针对包容性末级高速缓存的替换方法 |
US20140223106A1 (en) * | 2013-02-07 | 2014-08-07 | Lsi Corporation | Method to throttle rate of data caching for improved i/o performance |
CN103984736A (zh) * | 2014-05-21 | 2014-08-13 | 西安交通大学 | 一种高效的nand闪存数据库系统的缓存管理方法 |
CN104166631A (zh) * | 2014-09-11 | 2014-11-26 | 浪潮(北京)电子信息产业有限公司 | LLC中Cache行的替换方法 |
CN106227679A (zh) * | 2016-07-25 | 2016-12-14 | 北京邮电大学 | 一种数据缓存替换方法及装置 |
CN106250327A (zh) * | 2016-08-02 | 2016-12-21 | 华为技术有限公司 | 一种在键‑值存储中热点识别方法及装置 |
-
2016
- 2016-12-26 CN CN201611220285.5A patent/CN106649150B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6449695B1 (en) * | 1999-05-27 | 2002-09-10 | Microsoft Corporation | Data cache using plural lists to indicate sequence of data storage |
CN102117278A (zh) * | 2009-12-31 | 2011-07-06 | 联想(北京)有限公司 | 链表的创建方法及系统、数据的查找方法及系统 |
CN103049399A (zh) * | 2012-12-31 | 2013-04-17 | 北京北大众志微系统科技有限责任公司 | 一种针对包容性末级高速缓存的替换方法 |
US20140223106A1 (en) * | 2013-02-07 | 2014-08-07 | Lsi Corporation | Method to throttle rate of data caching for improved i/o performance |
CN103984736A (zh) * | 2014-05-21 | 2014-08-13 | 西安交通大学 | 一种高效的nand闪存数据库系统的缓存管理方法 |
CN104166631A (zh) * | 2014-09-11 | 2014-11-26 | 浪潮(北京)电子信息产业有限公司 | LLC中Cache行的替换方法 |
CN106227679A (zh) * | 2016-07-25 | 2016-12-14 | 北京邮电大学 | 一种数据缓存替换方法及装置 |
CN106250327A (zh) * | 2016-08-02 | 2016-12-21 | 华为技术有限公司 | 一种在键‑值存储中热点识别方法及装置 |
Cited By (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108334460A (zh) * | 2017-05-25 | 2018-07-27 | 中兴通讯股份有限公司 | 数据缓存方法及装置 |
CN108334460B (zh) * | 2017-05-25 | 2019-11-29 | 南京中兴新软件有限责任公司 | 数据缓存方法及装置 |
CN108038002A (zh) * | 2017-12-15 | 2018-05-15 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理方法 |
CN108132842A (zh) * | 2017-12-15 | 2018-06-08 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理系统 |
CN108038002B (zh) * | 2017-12-15 | 2021-11-02 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理方法 |
CN108132842B (zh) * | 2017-12-15 | 2021-11-02 | 天津津航计算技术研究所 | 一种嵌入式软件内存管理系统 |
CN109246229A (zh) * | 2018-09-28 | 2019-01-18 | 网宿科技股份有限公司 | 一种分发资源获取请求的方法和装置 |
CN109246229B (zh) * | 2018-09-28 | 2021-08-27 | 网宿科技股份有限公司 | 一种分发资源获取请求的方法和装置 |
CN113596513A (zh) * | 2021-08-02 | 2021-11-02 | 典基网络科技(上海)有限公司 | 一种视频内容分发方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106649150B (zh) | 2020-04-24 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106649150A (zh) | 一种缓存管理方法及装置 | |
CN103116552B (zh) | 用于在分布式存储系统中分配存储空间的方法和装置 | |
CN104935648A (zh) | 一种高性价比的cdn系统及文件预推、分片缓存的方法 | |
CN104811493B (zh) | 一种网络感知的虚拟机镜像存储系统及读写请求处理方法 | |
CN107888657A (zh) | 低延迟分布式存储系统 | |
CN105701219B (zh) | 一种分布式缓存的实现方法 | |
CN105656997B (zh) | 基于移动用户关系的热度缓存内容主动推送方法 | |
CN109542613A (zh) | 一种cdn节点内服务调度的分配方法、装置及存储介质 | |
CN105426321B (zh) | 采用远程位置信息的rdma友好缓存方法 | |
CN103096126B (zh) | 协作式缓存集群中面向视频点播服务的协作式缓存方法及系统 | |
CN103338242B (zh) | 一种基于多级缓存的混合云存储系统和方法 | |
CN108234639A (zh) | 一种基于内容分发网络cdn的数据访问方法和装置 | |
CN106777085A (zh) | 一种数据处理方法、装置及数据查询系统 | |
CN108647266A (zh) | 一种异构数据快速分布存储、交互方法 | |
CN106790601A (zh) | 服务地址的读取装置、系统和方法 | |
CN107329910A (zh) | 一种基于localStorage的Web前端数据本地存储和访问方法 | |
CN108111325A (zh) | 一种资源分配方法及装置 | |
CN107368608A (zh) | 基于arc替换算法的hdfs小文件缓存管理方法 | |
CN105320676A (zh) | 一种客户数据查询服务方法及装置 | |
CN101404649B (zh) | 一种基于cache的数据处理系统及其方法 | |
CN105611000A (zh) | 一种域名服务器的dns域名快速检索方法 | |
US20230359628A1 (en) | Blockchain-based data processing method and apparatus, device, and storage medium | |
CN111597259B (zh) | 数据存储系统、方法、装置、电子设备及存储介质 | |
CN114817195A (zh) | 一种分布式存储缓存管理的方法、系统、存储介质及设备 | |
CN107832017A (zh) | 一种提高地震数据存储io性能的方法及装置 |
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 |