CN108763110B - 一种数据缓存方法及装置 - Google Patents

一种数据缓存方法及装置 Download PDF

Info

Publication number
CN108763110B
CN108763110B CN201810238126.0A CN201810238126A CN108763110B CN 108763110 B CN108763110 B CN 108763110B CN 201810238126 A CN201810238126 A CN 201810238126A CN 108763110 B CN108763110 B CN 108763110B
Authority
CN
China
Prior art keywords
queue
lru
lfu
data
list
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
Application number
CN201810238126.0A
Other languages
English (en)
Other versions
CN108763110A (zh
Inventor
刘浩
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou H3C Technologies Co Ltd
Original Assignee
Hangzhou H3C Technologies Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou H3C Technologies Co Ltd filed Critical Hangzhou H3C Technologies Co Ltd
Priority to CN201810238126.0A priority Critical patent/CN108763110B/zh
Publication of CN108763110A publication Critical patent/CN108763110A/zh
Application granted granted Critical
Publication of CN108763110B publication Critical patent/CN108763110B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/122Replacement control using replacement algorithms of the least frequently used [LFU] type, e.g. with individual count value
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/12Replacement control
    • G06F12/121Replacement control using replacement algorithms
    • G06F12/123Replacement control using replacement algorithms with age lists, e.g. queue, most recently used [MRU] list or least recently used [LRU] list

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

本发明提供一种数据缓存方法及装置,方法包括:当存在待加入缓存的数据时,将该数据加入LRU队列;当LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从LRU队列中转移至LFU队列;将从LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从LFU队列中淘汰的数据的索引记录到LFU淘汰列表;当LRU淘汰列表的命中次数达到预设第一命中阈值时,增加LRU队列的空间,减小LFU队列的空间,并重置LRU淘汰列表的命中次数;以及,当LFU淘汰列表的命中次数达到预设第二命中阈值时,增加LFU队列的空间,减小LRU队列的空间,并重置LFU淘汰列表的命中次数。应用本发明实施例可以提高缓存命中率,优化缓存效果。

Description

一种数据缓存方法及装置
技术领域
本发明涉及数据处理技术领域,尤其涉及一种数据缓存方法及装置。
背景技术
缓存是影响存储系统性能的重要因素之一。由于数据直接从磁盘进行读取的速度比CPU(Center Process Unit,中央处理单元)的运算速度慢太多,数据从磁盘读取速度会成为存储系统性能的瓶颈,因此开发了各种缓存系统来提高性能。所谓的缓存,就是使用内存将数据保存起来,下次再读取数据时,从内存直接读取数据,无需从磁盘读取数据,提升了存储系统的性能。因此一个好的缓存策略对存储系统的性能影响是很大的。
LRU(Least Recently Used,最近最少使用)算法和LFU(Least Frequently Used,最不经常使用)算法是最常用的两种缓存算法。其中:
LRU算法是按照缓存数据进入缓存队列的先后顺序来处理的缓存策略,即先进入缓存队列的数据最先淘汰。
LFU算法是根据缓存页面的访问频度来决定缓存页面淘汰顺序的缓存策略,即缓存页面访问频度越高,缓存页面的引用计数就会越大,缓存队列按照缓存页面的引用计数进行排队,引用计数最小的缓存页面最早被淘汰。
发明内容
本发明提供一种数据缓存方法及装置,以提高缓存命中率,优化缓存效果。
根据本发明的第一方面,提供一种数据缓存方法,应用于存储设备,所述存储设备的缓存空间包括最近最少使用LRU队列和最不经常使用LFU队列,所述方法包括:
当存在待加入缓存的数据时,将该数据加入所述LRU队列;
当所述LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从所述LRU队列中转移至所述LFU队列;
将从所述LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从所述LFU队列中淘汰的数据的索引记录到LFU淘汰列表;
当所述LRU淘汰列表的命中次数达到预设第一命中阈值时,增加所述LRU队列的空间,减小所述LFU队列的空间,并重置所述LRU淘汰列表的命中次数;以及,
当所述LFU淘汰列表的命中次数达到预设第二命中阈值时,增加所述LFU队列的空间,减小所述LRU队列的空间,并重置所述LFU淘汰列表的命中次数。
根据本发明的第二方面,提供一种数据缓存装置,应用于存储设备,其特征在于,所述存储设备的缓存空间包括最近最少使用LRU队列和最不经常使用LFU队列,所述装置包括:
缓存队列维护单元,用于当存在待加入缓存的数据时,将该数据加入所述LRU队列;
所述缓存队列维护单元,还用于当所述LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从所述LRU队列中转移至所述LFU队列;
淘汰列表维护单元,用于将从所述LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从所述LFU队列中淘汰的数据的索引记录到LFU淘汰列表;
所述缓存队列维护单元,还用于当所述LRU淘汰列表的命中次数达到预设第一命中阈值时,增加所述LRU队列的空间,减小所述LFU队列的空间,并重置所述LRU淘汰列表的命中次数;以及,当所述LFU淘汰列表的命中次数达到预设第二命中阈值时,增加所述LFU队列的空间,减小所述LRU队列的空间,并重置所述LFU淘汰列表的命中次数。
应用本发明公开的技术方案,通过在存储设备的缓存空间中设置LRU队列和LFU队列,当存在待加入缓存的数据时,将该数据加入LRU队列;当LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从LRU队列中转移至LFU队列;进而,将从LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从LFU队列中淘汰的数据的索引记录到LFU淘汰列表,当LRU淘汰列表的命中次数达到预设第一命中阈值时,增加LRU队列的空间,减小LFU队列的空间,并重置LRU淘汰列表的命中次数;当LFU淘汰列表的命中次数达到预设第二命中阈值时,增加LFU队列的空间,减小LRU队列的空间,并重置LFU淘汰列表的命中次数,提高了缓存命中率,优化了缓存效果。
附图说明
图1是本发明实施例提供的一种数据缓存方法的流程示意图;
图2A~2H是本发明实施例提供的LRU队列、LFU队列、LRU淘汰列表、LFU淘汰列表的示意图;
图3是本发明实施例提供的一种数据缓存装置的结构示意图;
图4是本发明实施例提供的另一种数据缓存装置的结构示意图。
具体实施方式
为了使本技术领域的人员更好地理解本发明实施例中的技术方案,并使本发明实施例的上述目的、特征和优点能够更加明显易懂,下面结合附图对本发明实施例中技术方案作进一步详细的说明。
请参见图1,为本发明实施例提供的一种数据缓存方法的流程示意图,其中,该数据缓存方法可以应用于存储设备,如图1所示,该数据缓存方法可以包括以下步骤:
需要说明的是,在本发明实施例中,考虑到LRU算法和LFU算法的优缺点,为了优先数据缓存效果,提高缓存命中率,存储设备可以将缓存空间划分为两部分,其中一部分缓存空间使用LRU算法(本文中将该部分缓存空间称为LRU队列),另一部分缓存空间使用LFU算法(本文中将该部分缓存空间称为LFU队列),并根据实际场景中的数据读取情况动态调整LRU队列和LFU队列的大小。
步骤101、当存在待加入缓存的数据时,将该数据加入LRU队列。
本发明实施例中,当存在待加入缓存的数据,即存在数据需要加入缓存时,存储设备可以先将该数据加入到LRU队列中。
其中,存储设备将数据加入到LRU队列的具体实现可以参见现有LRU算法中的相关描述,本发明实施例在此不做赘述。
步骤102、当LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从LRU队列中转移至LFU队列。
本发明实施例中,存储设备可以记录LRU队列中缓存的数据的访问热度。
例如,对于LRU队列中的任一数据,存储设备每从LRU队列中读取一次该数据,则将该数据的访问热度加一。
相应地,当LRU队列中存在访问热度大于预设热度阈值(可以根据实际场景设定)的数据时,存储设备可以将该数据从LRU队列中转移至LFU队列,即将该数据从LRU队列中删除,并加入到LFU队列。
其中,存储设备将数据加入LFU队列的具体实现可以参见现有LFU算法中的相关描述,本发明实施例在此不做赘述。
此外,数据加入LFU队列之后,可以根据数据的访问热度进行排序(即数据访问热度与缓存页面访问频度成正比),并当需要进行数据淘汰时,优先淘汰访问热度最低的数据。
举例来说,假设预设热度阈值为1,数据被加入LRU队列时初始访问热度为0,数据每被读取一次,访问热度+1,则对于LRU队列中任一数据,当该数据被读取的次数达到2次时,存储设备可以将该数据从LRU队列转移至LFU队列。
在本申请其中一个实施例中,当存储设备接收到数据读取请求时,存储设备可以根据该数据读取请求查询LRU队列和/或LFU队列。
其中,存储设备可以先查询LRU队列,若未命中,则再查询LFU队列;或者,存储设备可以先查询LFU队列,若未命中,则再查询LRU队列;或,存储设备可以并发查询LRU队列和LFU队列。
在该实施例中,当存储设备根据接收到的数据读取请求命中LRU队列或LFU队列时,存储设备可以从LRU队列或LFU队列中读取所命中的数据,并将所命中的数据的访问热度加一。
应该认识到,在本发明实施例中,上述从LRU队列中读取一次数据,则将数据的访问热度加一的实现方式仅仅是本发明中记录数据的访问热度的一种具体示例,而并不是对本发明保护范围的限定,即本发明实施例中还可以应用其它方式记录数据的访问热度,例如,每一次从LRU队列中读取某数据,则将该数据的访问热度加二或加三等,其具体实现在此不做赘述。
步骤103、将从LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从LFU队列中淘汰的数据的索引记录到LFU淘汰列表。
本发明实施例中,存储设备还可以设置LRU淘汰列表以及LFU淘汰列表,分别用于记录从LRU队列中淘汰的数据的索引和从LFU队列中淘汰的数据的索引,以便后续流程中根据被淘汰的数据的命中情况调整LRU队列和LFU队列的大小。
相应地,在本发明实施例中,当LRU队列被填满,且有新的数据需要加入LRU队列时,存储设备可以按照LRU算法对LRU队列中的数据进行淘汰,即按照先入先出的原则,将最先加入LRU队列的数据从LRU队列中淘汰,并将新的数据加入LRU队列。
存储设备将数据从LRU队列中淘汰之后,可以将该数据的索引记录到LRU淘汰列表中。
同理,当LFU队列被填满,且有新的数据需要加入LFU队列时,存储设备可以按照LFU算法对LFU队列中的数据进行淘汰,即按照引用计数最小的缓存页面最早淘汰的原则,将LFU队列中引用计数最小的缓存页面中的数据从LRU队列中淘汰,并将新的数据加入LRU队列。
其中,存储设备也可以记录LFU队列中各数据的访问热度,该访问热度与数据所在缓存页面的引用计数成正比,即与该缓存页面的访问频度成正比。
存储设备将数据从LFU队列中淘汰之后,可以将该数据的索引记录到LFU淘汰列表中。
步骤104、当LRU淘汰列表的命中次数达到预设第一命中阈值时,增加LRU队列的空间,减小LFU队列的空间,并重置LRU淘汰列表的命中次数。
步骤105、当LFU淘汰列表的命中次数达到预设第二命中阈值时,增加LFU队列的空间,减小LRU队列的空间,并重置LFU淘汰列表的命中次数。
本发明实施例中,当存储设备接收到数据读取请求,且根据该数据读取请求未命中LRU队列和LFU队列时,存储设备可以进一步根据该数据读取请求查询LRU淘汰列表和/或LFU淘汰列表,并记录LRU淘汰列表和LFU淘汰列表的命中次数。
其中,存储设备可以先查询LRU淘汰列表,若未命中,则再查询LFU淘汰列表;或者,存储设备可以先查询LFU淘汰列表,若未命中,则再查询LRU淘汰列表;或,存储设备可以并发查询LRU淘汰列表和LFU淘汰列表。
在本发明其中一个实施例中,当存储设备根据接收到的数据读取请求命中LRU淘汰列表时,存储设备可以将自身记录的LRU淘汰列表的命中次数加一;当存储设备根据接收到的数据读取请求命中LFU淘汰列表时,存储设备可以将自身记录的LFU淘汰列表的命中次数。
本发明实施例中,当存储设备确定LRU淘汰列表的命中次数达到预设第一命中阈值(可以根据实际场景设定)时,存储设备可以确定LRU队列的访问需求更大,此时,存储设备可以增加LRU队列的空间,减小LFU队列的空间,并重置自身记录的LRU淘汰列表的命中次数。
同理,当存储设备确定LFU淘汰列表的命中次数达到预设第二命中阈值(可以根据实际场景设定)时,存储设备可以确定LFU队列的访问需求更大,此时,存储设备可以增加LFU队列的空间,减小LRU队列的空间,并重置自身记录的LFU淘汰列表的命中次数。
其中,预设第一命中阈值和预设第二命中阈值可以相同也可以不同。
在一个示例中,当存储设备确定LRU淘汰列表的命中次数达到预设第一命中阈值时,存储设备可以将LRU队列中的缓存页面的数量加一,并将LFU队列中缓存页面数量减一;
当存储设备确定LFU淘汰列表的命中次数达到预设第二命中阈值时,存储设备可以将LFU队列中的缓存页面的数量加一,并将LRU队列中缓存页面数量减一。
需要说明的是,存储设备将LRU队列中的缓存页面的数量减一时,优先选择空闲的缓存页面,当不存在空闲缓存页面时,优先选择最先加入LRU队列的数据所在的缓存页面。
存储设备将LFU队列中的缓存页面的数量减一时,优先选择空闲的缓存页面,当不存在空闲缓存页面时,优先选择引用计数最小的缓存页面。
此外,当LRU队列或LFU队列中新增的缓存页面为非空闲缓存页面时,即该新增的缓存页面中保存了数据时,该数据可以随着空间调整被加入到LRU队列或LFU队列;或者,存储设备可以删除该新增的缓存页面中的数据,并将其添加到对应的淘汰列表中。
再者,当存储设备需要减少LRU队列或LFU队列的缓存页面的数量,但是LRU队列或LFU队列的缓存页面的数量达到预设最小缓存页面数量(可以根据实际场景设定)时,存储设备可以不减少LRU队列或LFU队列的缓存页面的数量。
应该认识到,在本发明实施例中,上述每命中LRU淘汰列表或LFU淘汰列表一次,则将LRU淘汰列表或LFU淘汰列表的命中次数加一的实现方式仅仅是本发明中记录LRU淘汰列表或LFU淘汰列表的命中次数的一种具体示例,而并不是对本发明保护范围的限定,即本发明实施例中还可以应用其它方式记录LRU淘汰列表或LFU淘汰列表的命中次数,例如,每命中LRU淘汰列表或LFU淘汰列表一次,则将LRU淘汰列表或LFU淘汰列表的命中次数加二或加三等,其具体实现在此不做赘述。
此外,当需要调整LRU队列和LFU队列的空间时,也不限于每次增加或减少一个缓存页面,也可以每次增加或减少两个或两个以上缓存页面,其具体实现在此不做赘述。
本发明实施例中,当存储设备根据接收到的数据读取请求未命中LRU队列和LFU队列时,存储设备除了需要进行上述方法实施例中描述的处理之外,还需要进行缓存数据更新。
具体地,存储设备可以从磁盘中读取所请求读取的数据,并将其加入到LRU队列。
其中,当数据读取请求触发了LRU队列和LFU队列的空间调整时,存储设备将从磁盘中读取的数据加入LRU队列时可以在LRU队列和LFU队列的空间调整完成之后进行,其具体实现在此不做赘述。
可见,在图1所示方法流程中,通过在缓存空间中分别设置LRU队列和LFU队列,并根据LRU淘汰列表和LFU淘汰列表的命中次数动态调整LRU队列和LFU队列的空间,提高了缓存命中率,优化了缓存效果。
为了使本领域技术人员更好地理解本发明实施例提供的技术方案,下面结合具体实例对本发明实施例提供的技术方案进行说明。
请参见图2A,为本发明实施例提供的一种LRU队列、LFU队列、LRU淘汰列表以及LFU淘汰列表的示意图,其中,LRU队列和LFU队列用于缓存数据,LRU淘汰列表用于记录从LRU队列中淘汰的数据的索引,LFU淘汰列表用于记录从LFU队列中淘汰的数据的索引。
初始状态下,LRU队列和LFU队列各占存储设备的缓存空间的一半(图2A中以LRU队列和LFU队列各有4个缓存页面为例)。
初始状态下,LRU队列、LFU队列、LRU淘汰列表以及LFU淘汰列表均为空。
在该实施例中,当存在待加入缓存的数据时,存储设备可以将该数据先加入LRU队列。
例如,存储设备初始化运行时,当存储设备接收到针对数据1的数据读取请求时,存储设备可以先查询LRU队列和/或LFU队列,由于此时LRU队列和LFU队列为空,因此,查询结果为未命中;此时,存储设备可以进一步查询LRU淘汰列表和/或LFU淘汰列表,由于此时LRU淘汰列表和/或LFU淘汰列表为空,因此,查询结果仍为未命中,存储设备可以从磁盘中读取数据1,并将其加入LRU队列,其示意图如图2B所示。
存储设备将数据1加入到LRU队列之后,可以从LRU队列中读取数据1响应数据读取请求,此时,数据1的访问热度为1。
在该实施例中,当存储设备再次接收到针对数据1的数据读取请求时,存储设备根据数据读取请求命中LRU队列,并从LRU队列中读取数据1响应数据读取请求,将数据1的访问热度更新为2,由于其大于预设热度阈值(假设为1),因此,存储设备可以将数据1从LRU队列中转移至LFU队列,其示意图可以如图2C所示。
请参见图2D,假设某一时刻,LRU队列和LFU队列均被填满(假设此时LRU淘汰列表和LFU淘汰列表均仍为空),此时,若存储设备接收到针对数据5的数据读取请求,存储设备根据该数据读取请求未命中LRU队列和LFU队列,且未命中LRU淘汰列表和LFU淘汰列表,则存储设备可以从磁盘中读取数据5,并加入LRU队列。
其中,由于当前LRU队列已满,因此,需要对LRU队列进行数据淘汰,假设LRU队列中最先加入的数据为数据a,因此,存储设备可以将数据a从LRU队列中删除,并将数据a的索引(假设为a)加入到LRU淘汰列表,其示意图可以如图2E所示。
需要说明的是,图中所示的LRU队列中的a为数据a的具体数据,LRU淘汰列表中的a为数据a的数据索引,其它数据类似处理,对此本发明实施例不再复述。
同理,当LFU队列被填满,且由新的数据需要从LRU队列转移至LFU队列时,存储设备也需要对LFU队列进行数据淘汰处理,其具体实现可以参见上述方法实施例中的相关描述。
假设某一时刻,LRU队列、LFU队列、LRU淘汰列表以及LFU淘汰列表如图2F所示,若此时,存储设备接收到针对数据5的数据读取请求,存储设备可以根据该数据读取请求查询LRU队列和/或LFU队列,未命中LRU队列和LFU队列;存储设备进一步根据该数据读取请求查询LRU淘汰列表和/或LFU淘汰列表,命中LFU淘汰列表。
此时,存储设备将LFU淘汰列表的命中次数加1,并判断LFU淘汰列表的命中次数是否达到预设命中次数阈值(假设为3)。
若未达到,则存储设备可以从磁盘中读取数据5,并将其加入LRU队列,由于LRU队列已满,因此,存储设备可以将当前LRU队列中保存的数据中最先加入LRU队列的数据(假设为数据a)从LRU队列中删除,将其索引加入到LRU淘汰列表,并将数据5加入LRU队列,其示意图可以如图2G,进而,存储设备可以从LRU队列中读取数据5响应数据读取请求。
若达到,则存储设备可以将LRU队列的缓存页面减1,将LFU队列的缓存页面加1(以将数据a所在缓存页面从LRU队列中删除,并添加LFU队列中为例,该缓存页面中的数据a被删除,其索引被加入到LRU淘汰列表),此外,存储设备可以从磁盘中读取数据5,并将其加入LRU队列,由于LRU队列已满,因此,存储设备可以将当前LRU队列中保存的数据中最先加入LRU队列的数据(假设为数据b)从LRU队列中删除,将其索引加入到LRU淘汰列表,并将数据5加入LRU队列,其示意图可以如图2H,进而,存储设备可以从LRU队列中读取数据5响应数据读取请求。
通过以上描述可以看出,在本发明实施例提供的技术方案中,通过在存储设备的缓存空间中设置LRU队列和LFU队列,当存在待加入缓存的数据时,将该数据加入LRU队列;当LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从LRU队列中转移至LFU队列;进而,将从LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从LFU队列中淘汰的数据的索引记录到LFU淘汰列表,当LRU淘汰列表的命中次数达到预设第一命中阈值时,增加LRU队列的空间,减小LFU队列的空间,并重置LRU淘汰列表的命中次数;当LFU淘汰列表的命中次数达到预设第二命中阈值时,增加LFU队列的空间,减小LRU队列的空间,并重置LFU淘汰列表的命中次数,提高了缓存命中率,优化了缓存效果。
请参见图3,为本发明实施例提供一种数据缓存装置的结构示意图,其中,该数据缓存装置可以应用于上述方法实施例中的存储设备,如图3所示,该数据缓存装置可以包括:
缓存队列维护单元310,用于当存在待加入缓存的数据时,将该数据加入所述LRU队列;
所述缓存队列维护单元310,还用于当所述LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从所述LRU队列中转移至所述LFU队列;
淘汰列表维护单元320,用于将从所述LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从所述LFU队列中淘汰的数据的索引记录到LFU淘汰列表;
所述缓存队列维护单元310,还用于当所述LRU淘汰列表的命中次数达到预设第一命中阈值时,增加所述LRU队列的空间,减小所述LFU队列的空间,并重置所述LRU淘汰列表的命中次数;以及,当所述LFU淘汰列表的命中次数达到预设第二命中阈值时,增加所述LFU队列的空间,减小所述LRU队列的空间,并重置所述LFU淘汰列表的命中次数。
请一并参见图4,为本发明实施例提供的另一种数据缓存装置的结构示意图,如图4所示,在图3所示数据缓存装置的基础上,图4所示数据缓存装置还可以包括:
接收单元330,用于接收数据读取请求;
查询单元340,用于当所述接收单元330接收到数据读取请求时,根据所述数据读取请求查询所述LRU队列和/或LFU队列;
读取单元350,用于若所述数据读取请求命中LRU队列或LFU队列,则从LRU队列或LFU队列中读取所命中数据;
所述缓存队列维护单元310,用于将所命中的数据的访问热度加一。
在可选实施例中,所述查询单元340,还用于若所述数据读取请求未命中LRU队列和LFU队列,则根据所述数据读取请求查询所述LRU淘汰列表和/或LFU淘汰列表;
所述淘汰列表维护单元320,还用于若所述数据读取请求命中LRU淘汰列表或LFU淘汰列表,则将LRU淘汰列表或LFU淘汰列表的命中次数加一。
在可选实施例中,所述缓存列表维护单元310,具体用于当所述LRU淘汰列表的命中次数达到预设第一命中阈值时,将所述LRU队列中的缓存页面数量加一,并将所述LFU队列中的缓存页面数量减一,并重置所述LRU淘汰列表的命中次数;以及,当所述LFU淘汰列表的命中次数达到预设第二命中阈值时,将所述LFU队列中的缓存页面数量加一,并将所述LRU队列中的缓存页面数量减一,并重置所述LFU淘汰列表的命中次数。
在可选实施例中,初始状态下,所述LRU队列和所述LFU队列各占所述存储设备的缓存空间的一半。
上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本发明方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
由上述实施例可见,通过在存储设备的缓存空间中设置LRU队列和LFU队列,当存在待加入缓存的数据时,将该数据加入LRU队列;当LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从LRU队列中转移至LFU队列;进而,将从LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从LFU队列中淘汰的数据的索引记录到LFU淘汰列表,当LRU淘汰列表的命中次数达到预设第一命中阈值时,增加LRU队列的空间,减小LFU队列的空间,并重置LRU淘汰列表的命中次数;当LFU淘汰列表的命中次数达到预设第二命中阈值时,增加LFU队列的空间,减小LRU队列的空间,并重置LFU淘汰列表的命中次数,提高了缓存命中率,优化了缓存效果。
本领域技术人员在考虑说明书及实践这里公开的发明后,将容易想到本发明的其它实施方案。本申请旨在涵盖本发明的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本发明的一般性原理并包括本发明未公开的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本发明的真正范围和精神由下面的权利要求指出。
应当理解的是,本发明并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本发明的范围仅由所附的权利要求来限制。

Claims (10)

1.一种数据缓存方法,应用于存储设备,其特征在于,所述存储设备的缓存空间包括最近最少使用LRU队列和最不经常使用LFU队列,所述方法包括:
当存在待加入缓存的数据时,将该数据加入所述LRU队列,当所述LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从所述LRU队列中转移至所述LFU队列;
将从所述LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从所述LFU队列中淘汰的数据的索引记录到LFU淘汰列表;
当所述LRU淘汰列表的命中次数达到预设第一命中阈值时,增加所述LRU队列的空间,减小所述LFU队列的空间,并重置所述LRU淘汰列表的命中次数;以及,
当所述LFU淘汰列表的命中次数达到预设第二命中阈值时,增加所述LFU队列的空间,减小所述LRU队列的空间,并重置所述LFU淘汰列表的命中次数。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当接收到数据读取请求时,根据所述数据读取请求查询所述LRU队列和/或LFU队列;
若命中LRU队列或LFU队列,则从LRU队列或LFU队列中读取所命中数据,并将所命中数据的访问热度加一。
3.根据权利要求2所述的方法,其特征在于,所述根据所述数据读取请求查询所述LRU队列和/或LFU队列之后,还包括:
若未命中LRU队列和LFU队列,则根据所述数据读取请求查询所述LRU淘汰列表和/或LFU淘汰列表;
若命中LRU淘汰列表或LFU淘汰列表,则将LRU淘汰列表或LFU淘汰列表的命中次数加一。
4.根据权利要求1所述的方法,其特征在于,所述增加所述LRU队列的空间,减小所述LFU队列的空间,包括:
将所述LRU队列中的缓存页面数量加一,并将所述LFU队列中的缓存页面数量减一;
所述增加所述LFU队列的空间,减小所述LRU队列的空间,包括:
将所述LFU队列中的缓存页面数量加一,并将所述LRU队列中的缓存页面数量减一。
5.根据权利要求1-4任一项所述的方法,其特征在于,初始状态下,所述LRU队列和所述LFU队列各占所述存储设备的缓存空间的一半。
6.一种数据缓存装置,应用于存储设备,其特征在于,所述存储设备的缓存空间包括最近最少使用LRU队列和最不经常使用LFU队列,所述装置包括:
缓存队列维护单元,用于当存在待加入缓存的数据时,将该数据加入所述LRU队列;
所述缓存队列维护单元,还用于当所述LRU队列中存在访问热度大于预设热度阈值的数据时,将该数据从所述LRU队列中转移至所述LFU队列;
淘汰列表维护单元,用于将从所述LRU队列中淘汰的数据的索引记录到LRU淘汰列表,并将从所述LFU队列中淘汰的数据的索引记录到LFU淘汰列表;
所述缓存队列维护单元,还用于当所述LRU淘汰列表的命中次数达到预设第一命中阈值时,增加所述LRU队列的空间,减小所述LFU队列的空间,并重置所述LRU淘汰列表的命中次数;以及,当所述LFU淘汰列表的命中次数达到预设第二命中阈值时,增加所述LFU队列的空间,减小所述LRU队列的空间,并重置所述LFU淘汰列表的命中次数。
7.根据权利要求6所述的装置,其特征在于,所述装置还包括:
接收单元,用于接收数据读取请求;
查询单元,用于当所述接收单元接收到数据读取请求时,根据所述数据读取请求查询所述LRU队列和/或LFU队列;
读取单元,用于若所述数据读取请求命中LRU队列或LFU队列,则从LRU队列或LFU队列中读取所命中数据;
所述缓存队列维护单元,用于将所命中的数据的访问热度加一。
8.根据权利要求7所述的装置,其特征在于,
所述查询单元,还用于若所述数据读取请求未命中LRU队列和LFU队列,则根据所述数据读取请求查询所述LRU淘汰列表和/或LFU淘汰列表;
所述淘汰列表维护单元,还用于若所述数据读取请求命中LRU淘汰列表或LFU淘汰列表,则将LRU淘汰列表或LFU淘汰列表的命中次数加一。
9.根据权利要求6所述的装置,其特征在于,
所述淘汰列表维护单元,具体用于当所述LRU淘汰列表的命中次数达到预设第一命中阈值时,将所述LRU队列中的缓存页面数量加一,并将所述LFU队列中的缓存页面数量减一,并重置所述LRU淘汰列表的命中次数;以及,当所述LFU淘汰列表的命中次数达到预设第二命中阈值时,将所述LFU队列中的缓存页面数量加一,并将所述LRU队列中的缓存页面数量减一,并重置所述LFU淘汰列表的命中次数。
10.根据权利要求6-9任一项所述的装置,其特征在于,初始状态下,所述LRU队列和所述LFU队列各占所述存储设备的缓存空间的一半。
CN201810238126.0A 2018-03-22 2018-03-22 一种数据缓存方法及装置 Active CN108763110B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201810238126.0A CN108763110B (zh) 2018-03-22 2018-03-22 一种数据缓存方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201810238126.0A CN108763110B (zh) 2018-03-22 2018-03-22 一种数据缓存方法及装置

Publications (2)

Publication Number Publication Date
CN108763110A CN108763110A (zh) 2018-11-06
CN108763110B true CN108763110B (zh) 2021-01-26

Family

ID=63980589

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201810238126.0A Active CN108763110B (zh) 2018-03-22 2018-03-22 一种数据缓存方法及装置

Country Status (1)

Country Link
CN (1) CN108763110B (zh)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN111290974A (zh) * 2018-12-07 2020-06-16 北京忆恒创源科技有限公司 用于存储设备的缓存淘汰方法与存储设备
CN110147331B (zh) * 2019-05-16 2021-04-02 重庆大学 缓存数据处理方法、系统及可读存储介质
CN110413260A (zh) * 2019-06-19 2019-11-05 四川长虹电器股份有限公司 高争用环境下的细粒度锁设计方法
CN110569261B (zh) * 2019-08-09 2022-07-12 苏州浪潮智能科技有限公司 一种用于更新高速缓存区中所存储的资源的方法和装置
CN111240593B (zh) * 2020-01-06 2023-01-10 苏州浪潮智能科技有限公司 一种动态自适应调度的数据迁移方法、装置、设备和介质
CN111159066A (zh) * 2020-01-07 2020-05-15 杭州电子科技大学 一种动态调整的缓存数据管理及淘汰方法
CN111367833A (zh) * 2020-03-31 2020-07-03 中国建设银行股份有限公司 数据缓存方法、装置、计算机设备以及可读存储介质
CN111522509B (zh) * 2020-04-20 2023-06-09 上海霄云信息科技有限公司 分布式存储系统的缓存方法及设备
CN112667530A (zh) * 2020-12-31 2021-04-16 联想(北京)有限公司 一种数据缓存方法及装置
CN112817528A (zh) * 2021-01-21 2021-05-18 西安交通大学 一种用于系统存取的冷热数据识别优化方法
CN113590031B (zh) * 2021-06-30 2023-09-12 郑州云海信息技术有限公司 一种缓存管理方法、装置、设备以及计算机可读存储介质
CN114153760B (zh) * 2021-12-02 2022-07-29 北京乐讯科技有限公司 基于权重的健值存储缓存淘汰方法、系统及存储介质
CN117149836B (zh) * 2023-10-27 2024-02-27 联通在线信息科技有限公司 一种缓存处理方法和装置

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置
CN104794064A (zh) * 2015-04-21 2015-07-22 华中科技大学 一种基于区域热度的缓存管理方法
CN106527988A (zh) * 2016-11-04 2017-03-22 郑州云海信息技术有限公司 一种固态硬盘数据迁移的方法及装置
CN107577618A (zh) * 2017-09-13 2018-01-12 武大吉奥信息技术有限公司 一种三路均衡缓存淘汰方法及装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US6748491B2 (en) * 2001-04-19 2004-06-08 International Business Machines Corporation Designing a cache using an LRU-LFU array
US20080120469A1 (en) * 2006-11-22 2008-05-22 International Business Machines Corporation Systems and Arrangements for Cache Management
CN106897030A (zh) * 2017-02-28 2017-06-27 郑州云海信息技术有限公司 一种缓存数据管理方法及装置

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN103178989A (zh) * 2013-02-18 2013-06-26 中兴通讯股份有限公司 访问热度统计方法及装置
CN104794064A (zh) * 2015-04-21 2015-07-22 华中科技大学 一种基于区域热度的缓存管理方法
CN106527988A (zh) * 2016-11-04 2017-03-22 郑州云海信息技术有限公司 一种固态硬盘数据迁移的方法及装置
CN107577618A (zh) * 2017-09-13 2018-01-12 武大吉奥信息技术有限公司 一种三路均衡缓存淘汰方法及装置

Also Published As

Publication number Publication date
CN108763110A (zh) 2018-11-06

Similar Documents

Publication Publication Date Title
CN108763110B (zh) 一种数据缓存方法及装置
US10133679B2 (en) Read cache management method and apparatus based on solid state drive
KR102043886B1 (ko) 프로파일링 캐시 대체
EP3089039B1 (en) Cache management method and device
US7096321B2 (en) Method and system for a cache replacement technique with adaptive skipping
US7793065B2 (en) System and method for dynamic sizing of cache sequential list
US9189422B2 (en) Method to throttle rate of data caching for improved I/O performance
EP3388935B1 (en) Cache management method, cache controller and computer system
US7089396B2 (en) Method and profiling cache for management of virtual memory
US20170371807A1 (en) Cache data determining method and apparatus
US10929308B2 (en) Performing maintenance operations
US8874840B2 (en) Adaptive prestaging in a storage controller
US20030110357A1 (en) Weight based disk cache replacement method
CN111309650B (zh) 缓存控制方法、装置、存储介质及设备
US9372810B2 (en) Collaborative caching
US11809330B2 (en) Information processing apparatus and method
US20090193196A1 (en) Method and system for cache eviction
EP3285172A1 (en) Data cache region prefetcher
CN110413545B (zh) 存储管理方法、电子设备和计算机程序产品
CN111858403A (zh) 基于概率对访问频率计数的缓存数据热度管理方法及系统
CN109582233A (zh) 一种数据的缓存方法和装置
JP2013041414A (ja) 記憶制御システムおよび方法、置換方式および方法
CN116467353B (zh) 一种基于lru差异化的自适应调节的缓存方法及系统
CN109086224B (zh) 一种自适应分类重用距离来捕捉热数据的缓存方法
CN116185904A (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