[发明专利]数据缓存方法及装置有效
申请号: | 201710380595.1 | 申请日: | 2017-05-25 |
公开(公告)号: | CN108334460B | 公开(公告)日: | 2019-11-29 |
发明(设计)人: | 屠要峰;郭斌;黄震江;王兆政 | 申请(专利权)人: | 南京中兴新软件有限责任公司 |
主分类号: | G06F12/123 | 分类号: | G06F12/123 |
代理公司: | 11240 北京康信知识产权代理有限责任公司 | 代理人: | 江舟;董文倩<国际申请>=<国际公布>= |
地址: | 210012 江苏省南*** | 国省代码: | 江苏;32 |
权利要求书: | 查看更多 | 说明书: | 查看更多 |
摘要: | |||
搜索关键词: | 待存储数据 占用 链表 比例确定 存储方式 存储位置 缓存链表 数据缓存 文件存储 重要级别 存储 灵活 | ||
本发明提供了一种数据缓存方法及装置,其中,该方法包括:通过本发明,将缓存链表预先划分为多个区域,多个区域分别用于存储不同重要级别的数据,在接收到待存储数据后,根据当前链表的占用长度,也就是占用比例确定该待存储数据的存储位置,解决了相关技术中存储方式单一的问题,实现了依据当前链表占用情况灵活地将文件存储到不同的区域。
技术领域
本发明涉及通信领域,具体而言,涉及一种数据缓存方法及装置。
背景技术
在相关技术中,在大型分布式系统以及虚拟化等领域中,通常借由软件定义存储的方式,将物理存储(通常为机械硬盘,或基于机械硬盘的磁阵)池化,进行集中管理,达到按需分配,弹性伸缩的目的。
此时,由于需要同时应对来自不同业务的压力,机械硬盘的输入输出I/O速度往往成为系统的瓶颈。解决此问题的通常做法是在业务系统和磁盘之间使用高性能的内存或固态硬盘作为I/O缓存,尽量把频繁读写的热点数据换入到高性能的缓存中,提高系统的响应速度。常用的缓存调度算法有随机、循环、LRU等三种,其中LRU(最近最少使用,LeastRecently Used,简称为LRU)是最优的。此处,以LRU为例,说明相关技术中的缓存方式。
LRU算法根据数据的历史访问记录来进行数据淘汰,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。
最常见的实现是使用单链表保存缓存数据,详细算法实现如下(参考附图1,图1是根据相关技术中的LRU缓存原理示意图):
1.新数据插入到链表头部;
2.每当缓存命中(即缓存中的数据被访问),则将数据移到链表头部;
3.当链表满的时候,将链表尾部的数据丢弃。
这种方式在读写压力不大时,可以很好的保留热点数据,但有如下缺点:
1)数据重复读写时,会导致链表节点的频繁移动,列表维护成本高。
2)突发性的批量I/O操作会导致LRU链表中的热点数据被冲刷掉,降低缓存的命中率,缓存效果严重下降。
另外的一些LRU改进算法,比如LRU-K、Multi Queue等需要维护两个或多个列表,实现复杂度高。
针对相关技术中数据存储方式单一的问题,目前还没有有效的解决方案。
发明内容
本发明实施例提供了一种数据缓存方法及装置,以至少解决相关技术中数据存储方式单一的问题。
根据本发明的一个实施例,提供了一种数据缓存方法,包括:获取待存储数据;依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,其中,所述存储位置包括:依据所述缓存链表的最大长度预先划分的多个区域;在确定的所述存储位置存储所述待存储数据。
可选地,所述多个区域由所述缓存链表的头部至尾部包括:第一区域、第二区域,,所述第一区域用于存储被频繁访问的数据。
可选地,依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,在确定的所述存储位置存储所述待存储数据,包括以下之一:在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域;在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域;其中,所述预设阈值为所述第一区域的长度。
可选地,在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域之后,所述方法还包括:保持所述缓存链表中存储的缓存命中数据的位置不变。
该专利技术资料仅供研究查看技术是否侵权等信息,商用须获得专利权人授权。该专利全部权利属于南京中兴新软件有限责任公司,未经南京中兴新软件有限责任公司许可,擅自商用是侵权行为。如果您想购买此专利、获得商业授权和技术合作,请联系【客服】
本文链接:http://www.vipzhuanli.com/pat/books/201710380595.1/2.html,转载请声明来源钻瓜专利网。