The invention provides a data caching method and device, wherein, the method includes: through the invention, the cache linked list is divided into multiple areas in advance, and multiple areas are respectively used to store data of different important levels. After receiving the data to be stored, the storage position of the data to be stored is determined according to the occupation length of the current linked list, that is, the occupation proportion, and the phase is solved As for the single storage mode in the technology, the file can be stored in different areas flexibly according to the current usage of linked list.
【技术实现步骤摘要】
数据缓存方法及装置
本专利技术涉及通信领域,具体而言,涉及一种数据缓存方法及装置。
技术介绍
在相关技术中,在大型分布式系统以及虚拟化等领域中,通常借由软件定义存储的方式,将物理存储(通常为机械硬盘,或基于机械硬盘的磁阵)池化,进行集中管理,达到按需分配,弹性伸缩的目的。此时,由于需要同时应对来自不同业务的压力,机械硬盘的输入输出I/O速度往往成为系统的瓶颈。解决此问题的通常做法是在业务系统和磁盘之间使用高性能的内存或固态硬盘作为I/O缓存,尽量把频繁读写的热点数据换入到高性能的缓存中,提高系统的响应速度。常用的缓存调度算法有随机、循环、LRU等三种,其中LRU(最近最少使用,LeastRecentlyUsed,简称为LRU)是最优的。此处,以LRU为例,说明相关技术中的缓存方式。LRU算法根据数据的历史访问记录来进行数据淘汰,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。最常见的实现是使用单链表保存缓存数据,详细算法实现如下(参考附图1,图1是根据相关技术中的LRU缓存原理示意图):1.新数据插入到链表头部;2.每当缓存命中(即缓存中的数据被访问),则将数据移到链表头部;3.当链表满的时候,将链表尾部的数据丢弃。这种方式在读写压力不大时,可以很好的保留热点数据,但有如下缺点:1)数据重复读写时,会导致链表节点的频繁移动,列表维护成本高。2)突发性的批量I/O操作会导致LRU链表中的热点数据被冲刷掉,降低缓存的命中率,缓存效果 ...
【技术保护点】
1.一种数据缓存方法,其特征在于,包括:/n获取待存储数据;/n依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,其中,所述存储位置包括:依据所述缓存链表的最大长度预先划分的多个区域;/n在确定的所述存储位置存储所述待存储数据,所述多个区域由所述缓存链表的头部至尾部包括:第一区域、第二区域,所述第一区域用于存储被频繁访问的数据,对于所述缓存列表的缓存命中数据,如果缓存命中的数据在所述第二区域,则将所述缓存命中的数据迁移至所述缓存列表的头部,并记录此时所述缓存列表所淘汰的数据个数R,记录为r1;如果缓存命中的数据在所述第一区域,则记录此时所述缓存列表所淘汰的数据个数R,记录为r2,如果所述r2和r1之差大于N/2,N为所述第一区域的长度,将所述缓存命中的数据迁移至所述缓存列表的链表头部,如果所述r2和r1之差小于或等于N/2,保持所述缓存命中的数据的位置不变;/n其中,依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,在确定的所述存储位置存储所述待存储数据,包括以下之一:/n在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域; ...
【技术特征摘要】
1.一种数据缓存方法,其特征在于,包括:
获取待存储数据;
依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,其中,所述存储位置包括:依据所述缓存链表的最大长度预先划分的多个区域;
在确定的所述存储位置存储所述待存储数据,所述多个区域由所述缓存链表的头部至尾部包括:第一区域、第二区域,所述第一区域用于存储被频繁访问的数据,对于所述缓存列表的缓存命中数据,如果缓存命中的数据在所述第二区域,则将所述缓存命中的数据迁移至所述缓存列表的头部,并记录此时所述缓存列表所淘汰的数据个数R,记录为r1;如果缓存命中的数据在所述第一区域,则记录此时所述缓存列表所淘汰的数据个数R,记录为r2,如果所述r2和r1之差大于N/2,N为所述第一区域的长度,将所述缓存命中的数据迁移至所述缓存列表的链表头部,如果所述r2和r1之差小于或等于N/2,保持所述缓存命中的数据的位置不变;
其中,依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,在确定的所述存储位置存储所述待存储数据,包括以下之一:
在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域;
在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域。
2.根据权利要求1所述的方法,其特征在于,在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域之后,所述方法还包括:
保持所述缓存链表中存储的缓存命中数据的位置不变。
3.根据权利要求1所述的方法,其特征在于,在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域之后,所述方法还包括以下之一:
...
【专利技术属性】
技术研发人员:屠要峰,郭斌,黄震江,王兆政,
申请(专利权)人:南京中兴新软件有限责任公司,
类型:发明
国别省市:江苏;32
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。