数据缓存方法及装置制造方法及图纸

技术编号:22679290 阅读:84 留言:0更新日期:2019-11-29 22:25
本发明专利技术提供了一种数据缓存方法及装置,其中,该方法包括:通过本发明专利技术,将缓存链表预先划分为多个区域,多个区域分别用于存储不同重要级别的数据,在接收到待存储数据后,根据当前链表的占用长度,也就是占用比例确定该待存储数据的存储位置,解决了相关技术中存储方式单一的问题,实现了依据当前链表占用情况灵活地将文件存储到不同的区域。

Data caching method and device

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链表中的热点数据被冲刷掉,降低缓存的命中率,缓存效果严重下降。另外的一些LRU改进算法,比如LRU-K、MultiQueue等需要维护两个或多个列表,实现复杂度高。针对相关技术中数据存储方式单一的问题,目前还没有有效的解决方案。
技术实现思路
本专利技术实施例提供了一种数据缓存方法及装置,以至少解决相关技术中数据存储方式单一的问题。根据本专利技术的一个实施例,提供了一种数据缓存方法,包括:获取待存储数据;依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,其中,所述存储位置包括:依据所述缓存链表的最大长度预先划分的多个区域;在确定的所述存储位置存储所述待存储数据。可选地,所述多个区域由所述缓存链表的头部至尾部包括:第一区域、第二区域,,所述第一区域用于存储被频繁访问的数据。可选地,依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,在确定的所述存储位置存储所述待存储数据,包括以下之一:在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域;在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域;其中,所述预设阈值为所述第一区域的长度。可选地,在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域之后,所述方法还包括:保持所述缓存链表中存储的缓存命中数据的位置不变。可选地,在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域之后,所述方法还包括以下之一:保持所述第一区域和/或所述第二区域的头部位置存储的缓存命中数据的位置不变;迁移所述第一区域和/或所述第二区域的尾部位置存储的缓存命中数据至所述缓存链表的头部位置。根据本专利技术的另一个实施例,提供了一种LRU缓存装置,包括:获取模块,用于获取待存储数据;确定模块,用于依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,其中,所述存储位置包括:依据所述缓存链表的最大长度预先划分的多个区域;存储模块,用于在确定的所述存储位置存储所述待存储数据。可选地,所述多个区域由所述缓存链表的头部至尾部包括:第一区域、第二区域,所述第一区域用于存储被频繁访问的数据。可选地,所述确定模块还用于在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域;或者,所述确定模块还用于在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域;其中,所述预设阈值为所述第一区域的长度。根据本专利技术的另一个实施例,提供了一种存储介质,所述存储介质包括存储的程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。根据本专利技术的另一个实施例,提供了一种处理器,所述处理器用于运行程序,其中,所述程序运行时执行上述可选实施例任一项中所述的方法。通过本专利技术,将缓存链表预先划分为多个区域,多个区域分别用于存储不同重要级别的数据,在接收到待存储数据后,根据当前链表的占用长度,也就是占用比例确定该待存储数据的存储位置,解决了相关技术中存储方式单一的问题,实现了依据当前链表占用情况灵活地将文件存储到不同的区域。附图说明此处所说明的附图用来提供对本专利技术的进一步理解,构成本申请的一部分,本专利技术的示意性实施例及其说明用于解释本专利技术,并不构成对本专利技术的不当限定。在附图中:图1是根据相关技术中的LRU缓存原理示意图;图2是本专利技术实施例的一种数据缓存方法的计算机终端的硬件结构框图;图3是根据本专利技术实施例的一种数据缓存方法的流程图;图4是根据本专利技术优选实施例的LRU分区缓存流程图。具体实施方式需要说明的是,下面各个实施例中以LRU链表为例,但是不局限于LRU链表,各个实施例记载的方案也可以应用于随机缓存方法,循环缓存方法等缓存调度算法。实施例一本申请实施例一所提供的方法实施例可以在移动终端、计算机终端或者类似的运算装置中执行。以运行在计算机终端上为例,图2是本专利技术实施例的一种数据缓存方法的计算机终端的硬件结构框图。如图2所示,计算机终端20可以包括一个或多个(图中仅示出一个)处理器202(处理器202可以包括但不限于微处理器MCU或可编程逻辑器件FPGA等的处理装置)、用于存储数据的存储器204、以及用于通信功能的传输装置206。本领域普通技术人员可以理解,图2所示的结构仅为示意,其并不对上述电子装置的结构造成限定。例如,计算机终端20还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。存储器204可用于存储应用软件的软件程序以及模块,如本专利技术实施例中的一种数据缓存方法对应的程序指令/模块,处理器202通过运行存储在存储器204内的软件程序以及模块,从而执行各种功能应用以及数据处理,即实现上述的方法。存储器204可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器204可进一步包括相对于处理器202远程设置的存储器,这些远程存储器可以通过网络连接至计算机终端20。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。传输装置206用于经由一个网络接收或者发送数据。上述的网络具体实例可包括计算机终端20的通信本文档来自技高网
...

【技术保护点】
1.一种数据缓存方法,其特征在于,包括:/n获取待存储数据;/n依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,其中,所述存储位置包括:依据所述缓存链表的最大长度预先划分的多个区域;/n在确定的所述存储位置存储所述待存储数据,所述多个区域由所述缓存链表的头部至尾部包括:第一区域、第二区域,所述第一区域用于存储被频繁访问的数据,对于所述缓存列表的缓存命中数据,如果缓存命中的数据在所述第二区域,则将所述缓存命中的数据迁移至所述缓存列表的头部,并记录此时所述缓存列表所淘汰的数据个数R,记录为r1;如果缓存命中的数据在所述第一区域,则记录此时所述缓存列表所淘汰的数据个数R,记录为r2,如果所述r2和r1之差大于N/2,N为所述第一区域的长度,将所述缓存命中的数据迁移至所述缓存列表的链表头部,如果所述r2和r1之差小于或等于N/2,保持所述缓存命中的数据的位置不变;/n其中,依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,在确定的所述存储位置存储所述待存储数据,包括以下之一:/n在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域;/n在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域。/n...

【技术特征摘要】
1.一种数据缓存方法,其特征在于,包括:
获取待存储数据;
依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,其中,所述存储位置包括:依据所述缓存链表的最大长度预先划分的多个区域;
在确定的所述存储位置存储所述待存储数据,所述多个区域由所述缓存链表的头部至尾部包括:第一区域、第二区域,所述第一区域用于存储被频繁访问的数据,对于所述缓存列表的缓存命中数据,如果缓存命中的数据在所述第二区域,则将所述缓存命中的数据迁移至所述缓存列表的头部,并记录此时所述缓存列表所淘汰的数据个数R,记录为r1;如果缓存命中的数据在所述第一区域,则记录此时所述缓存列表所淘汰的数据个数R,记录为r2,如果所述r2和r1之差大于N/2,N为所述第一区域的长度,将所述缓存命中的数据迁移至所述缓存列表的链表头部,如果所述r2和r1之差小于或等于N/2,保持所述缓存命中的数据的位置不变;
其中,依据当前缓存链表被占用的长度确定所述待存储数据的存储位置,在确定的所述存储位置存储所述待存储数据,包括以下之一:
在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域;
在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域。


2.根据权利要求1所述的方法,其特征在于,在检测到所述当前缓存链表被占用的长度小于等于预设阈值的情况下,将所述待存储数据存储到所述第一区域之后,所述方法还包括:
保持所述缓存链表中存储的缓存命中数据的位置不变。


3.根据权利要求1所述的方法,其特征在于,在检测到所述当前缓存链表被占用的长度大于所述预设阈值的情况下,将所述待存储数据存储至所述第二区域之后,所述方法还包括以下之一:
...

【专利技术属性】
技术研发人员:屠要峰郭斌黄震江王兆政
申请(专利权)人:南京中兴新软件有限责任公司
类型:发明
国别省市:江苏;32

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1
相关领域技术
  • 暂无相关专利