大容量缓存及数据存储和读取、内存分配和回收的方法

文档序号:6628192阅读:215来源:国知局
大容量缓存及数据存储和读取、内存分配和回收的方法
【专利摘要】本发明公开了一种大容量缓存及数据存储和读取、内存分配和回收的方法,涉及数据存储领域。该大容量缓存包括,数据存储模块:用于以数据块的形式存储数据;数据读取模块:用于以数据块的形式读取数据。本发明提供的技术方案,既实现了文件系统对内存的访问,减少了文件系统对磁盘的访问,提升了对大量数据的读取速度,也极大的节省了内存空间,提高了内存资源的利用率;进而提高了计算机中的程序运行速度以及计算机的整体性能。
【专利说明】大容量缓存及数据存储和读取、内存分配和回收的方法

【技术领域】
[0001]本发明涉及数据存储领域,尤其涉及一种大容量缓存及数据存储和读取、内存分配和回收的方法。

【背景技术】
[0002]磁盘和文件系统是计算机的重要部分之一,是保存数据的地方。但磁盘的访问速度远低于内存的访问速度,当面对大量数据时,磁盘的访问速度成为处理数据的瓶颈。为了提高数据的处理速度,文件系统利用内存为磁盘提供了一套缓存机制。
[0003]目前,计算机文件系统的缓存是基于文件的,而由于在相同的文件内或不同的文件间存在大量相同的数据,所以内存中就会有大量相同的数据,浪费了大量的内存空间,进而导致内存资源利用率的下降。一旦文件系统消耗了大量内存,会导致计算机中的程序运行缓慢,影响计算机的整体性能。


【发明内容】

[0004]本发明的目的在于提供一种大容量缓存及数据存储和读取、内存分配和回收的方法,从而解决现有技术中存在的前述问题。
[0005]为了实现上述目的,本发明采用的技术方案如下:
[0006]一种大容量缓存,包括,
[0007]数据存储模块:用于以数据块的形式存储数据
[0008]数据读取模块:用于以数据块的形式读取数据。
[0009]进一步地,所述大容量缓存还包括,
[0010]内存分配模块:用于无空闲内存时,从内存池中分配第一内存块,并将所述第一内存块分割成多个固定大小的第二内存块。
[0011]进一步地,所述大容量缓存还包括,
[0012]内存回收模块:用于基于数据访问时间和访问次数的更新,进行内存的回收。
[0013]上述大容量缓存的数据存储方法,包括如下步骤:
[0014]SI,接收数据块和所述数据块对应的特征码;
[0015]S2,用所述特征码检索所述数据块,如果检索到所述数据块,则抛弃接收到的所述数据块和所述特征码;如果没有检索到所述数据块,则执行步骤S3 ;
[0016]S3,保存所述数据块和所述特征码;
[0017]S4,建立特征码索引表,所述特征码索引表包括所述特征码和与其对应的数据块;
[0018]S5,更新所述数据块的访问时间和访问次数。
[0019]进一步地,步骤SI之前,还包括步骤,计算所述数据块的特征码。
[0020]其中,所述计算所述数据块的特征码,具体为,计算所述数据块的MD5值。
[0021]上述大容量缓存的数据读取方法,包括如下步骤:
[0022]SI,接收数据块对应的特征码;
[0023]S2,用所述特征码检索所述数据块,如果检索到所述数据块,则执行步骤S3 ;如果没有检索到所述数据块,则抛弃接收到的所述特征码;
[0024]S3,读取所述数据块;
[0025]S4,保存所述特征码;
[0026]S5,建立特征码索引表,所述特征码索引表包括所述特征码和与其对应的数据块;
[0027]S6,更新所述数据块的访问时间和访问次数。
[0028]上述大容量缓存的内存分配方法,包括如下步骤:
[0029]SI,检查空闲内存列表,如果没有空闲内存,则执行步骤S2-S5 ;如果有空闲内存,则执行步骤S4-S5 ;
[0030]S2,从内存池中分配第一内存块,并将所述第一内存块分割成多个固定大小的第二内存块;
[0031]S3,将所述第二内存块添加到所述空闲内存列表中;
[0032]S4,从所述空闲内存列表中获取内存;
[0033]S5,在所述空闲内存列表中,将所述内存标记为已使用。
[0034]上述大容量缓存的内存回收方法,包括如下步骤:
[0035]SI,启动定时器;
[0036]S2,获取所述数据块的访问时间和访问次数;
[0037]S3,检查所述数据块是否属于非热点数据块,如果所述数据块不属于非热点数据块,则检查下一个数据块;如果所述数据块属于非热点数据块,则执行步骤S4 ;
[0038]S4,移除所述数据块;
[0039]S5,检查所述第一内存块是否已经空闲,如果已经空闲,则释放所述第一内存块;如果没有空闲,则将所述第二内存块放入空闲内存列表。
[0040]进一步地,步骤S5之后,还包括,当多个所述第二内存块形成所述第一内存块后,释放所述第一内存块。
[0041]本发明的有益效果是:
[0042]本发明针对大量数据的处理创建了一种大容量缓存,并实现了该大容量缓存方法,该大容量缓存及其实现方法是基于数据块的,而不是基于文件的,从而避免了相同数据占用多份内存,以及在处理大量数据时,能够保证相同的数据块在缓存中只处理一次,而不会有大量的重复。所以,本发明提供的技术方案,既实现了文件系统对内存的访问,减少了文件系统对磁盘的访问,提升了对大量数据的读取速度,也极大的节省了内存空间,提高了内存资源的利用率;进而提高了计算机中的程序运行速度以及计算机的整体性能。

【专利附图】

【附图说明】
[0043]图1是本发明实施例提供的大容量缓存的构造示意图;
[0044]图2是本发明实施例提供的大容量缓存的数据存储方法的流程图;
[0045]图3是本发明实施例提供的大容量缓存的数据读取方法的流程图;
[0046]图4是本发明实施例提供的大容量缓存的内存分配方法的流程图;
[0047]图5是本发明实施例提供的大容量缓存的内存回收方法的流程图。

【具体实施方式】
[0048]为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图,对本发明进行进一步详细说明。应当理解,此处所描述的【具体实施方式】仅仅用以解释本发明,并不用于限定本发明。
[0049]如图1所示,本发明实施例提供了一种大容量缓存,可以包括,
[0050]数据存储模块:用于以数据块的形式存储数据
[0051]数据读取模块:用于以数据块的形式读取数据。
[0052]现有技术中,由于计算机文件系统的缓存是基于文件的,在相同的文件内或不同的文件间存在大量相同的数据,所以操作过程中,会浪费大量的内存空间,进而导致内存资源利用率下降,从而影响计算机的整体性能。本发明实施例为了解决上述问题,计算机文件系统的缓存数据采用基于数据块的形式进行管理,这样,就可以保证相同的数据块在内存中只处理一次,而不会重复处理,造成内存空间的浪费和资源利用率的下降,从而提高了计算机的整体性能。
[0053]与现有技术中的以文件的形式进行数据的读取操作相比,本发明实施例提供的大容量缓存,在面对大量数据时,尤其是面对大量不断变化的数据时,其以数据块的形式进行数据的读取操作,对内存资源利用率的提高和系统整体性能的提高更加明显,作用更加显著。
[0054]本发明提供的一个实施例中,大容量缓存还可以包括,
[0055]内存分配模块:用于无空闲内存时,从内存池中分配第一内存块,并将所述第一内存块分割成多个固定大小的第二内存块。
[0056]采用上述技术方案,实现了内存的预分配,从而实现了数据读取速度的提高,进而提升了系统的整体性能。
[0057]在本发明提供的一个实施例中,大容量缓存还可以包括,
[0058]内存回收模块:用于基于数据访问时间和访问次数的更新,进行内存的回收。
[0059]采用上述技术方案,可以对非热点数据占用的内存进行回收,从而节省了内存资源,提高了内存的利用率。
[0060]如图2所示,本发明实施例提供了上述大容量缓存的数据存储方法,包括如下步骤:
[0061]SI,接收数据块和所述数据块对应的特征码;
[0062]S2,用所述特征码检索所述数据块,如果检索到所述数据块,则抛弃接收到的所述数据块和所述特征码;如果没有检索到所述数据块,则执行步骤S3 ;
[0063]S3,保存所述数据块和所述特征码;
[0064]S4,建立特征码索引表,所述特征码索引表包括所述特征码和与其对应的数据块;
[0065]S5,更新所述数据块的访问时间和访问次数。
[0066]其中,步骤SI之前,还可以包括步骤,计算所述数据块的特征码。计算所述数据块的特征码,具体可以为,计算所述数据块的MD5值。
[0067]由于MD5计算时,将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,即MD5值。所以,对于一个文件,只存在一个MD5值,如果该文件进行了任意的变动,MD5值都会发生变化,故对数据进行MD5计算,数据标记更加准确。本发明实施例中,将计算得到的MD5值作为数据块的特征码,由于每个数据块的MD5值是唯一的,所以以MD5值作为数据块的特征码,会更加准确,不会出现错误识别的情况。
[0068]本发明实施例中,通过建立数据块对应的特征码索引表,由于特征码索引表包括特征码和与其对应的数据块,所以使用特征码检索数据块,快速而且准确,从而可以在缓存中实现快速而且准确的数据存储过程。在面对大量数据时,尤其是面对大量不断变化的数据时,数据存储速度的提升和准确率的提高将更加明显,进而对系统整体性能的提高更加明显。
[0069]同时,由于本发明实施例中,数据存储是基于数据块的,可以保证相同的数据在缓存中只存储一次,所以不会出现同一数据占用多块内存的情况,不会造成内存资源的浪费,从而可以提高内存的利用率和系统的整体性能。
[0070]如图3所示,本发明实施例提供了上述大容量缓存的数据读取方法,包括如下步骤:
[0071]SI,接收数据块对应的特征码;
[0072]S2,用所述特征码检索所述数据块,如果检索到所述数据块,则执行步骤S3 ;如果没有检索到所述数据块,则抛弃接收到的所述特征码;
[0073]S3,读取所述数据块;
[0074]S4,保存所述特征码;
[0075]S5,建立特征码索引表,所述特征码索引表包括所述特征码和与其对应的数据块;
[0076]S6,更新所述数据块的访问时间和访问次数。
[0077]其中,步骤SI之前,还可以包括步骤,计算所述数据块的特征码。计算所述数据块的特征码,具体可以为,计算所述数据块的MD5值。
[0078]由于MD5计算时,将整个文件当作一个大文本信息,通过其不可逆的字符串变换算法,产生一个唯一的MD5信息摘要,即MD5值。所以,对于一个文件,只存在一个MD5值,如果该文件进行了任意的变动,MD5值都会发生变化,故对数据进行MD5计算,数据标记更加准确。本发明实施例中,将计算得到的MD5值作为数据块的特征码,由于每个数据块的MD5值是唯一的,所以以MD5值作为数据块的特征码,会更加准确,不会出现错误识别的情况。
[0079]本发明实施例中,通过建立数据块对应的特征码索引表,由于特征码索引表包括特征码和与其对应的数据块,所以使用特征码检索数据块,快速而且准确,从而可以在缓存中实现快速而且准确的数据读取过程。在面对大量数据时,尤其是面对大量不断变化的数据时,数据读取速度的提升和准确率的提高将更加明显,进而对系统整体性能的提高更加明显。
[0080]同时,由于本发明实施例中,数据读取是基于数据块的,可以保证相同的数据在缓存中只读取一次,所以不会出现同一数据占用多块内存的情况,不会造成内存资源的浪费,从而可以提高内存的利用率和系统的整体性能。
[0081]如图4所示,本发明实施例提供了上述大容量缓存的内存分配方法,包括如下步骤:
[0082]SI,检查空闲内存列表,如果没有空闲内存,则执行步骤S2-S5 ;如果有空闲内存,则执行步骤S4-S5 ;
[0083]S2,从内存池中分配第一内存块,并将所述第一内存块分割成多个固定大小的第二内存块;
[0084]S3,将所述第二内存块添加到所述空闲内存列表中;
[0085]S4,从所述空闲内存列表中获取内存;
[0086]S5,在所述空闲内存列表中,将所述内存标记为已使用。
[0087]本发明实施例中,通过没有空闲内存时,从内存池中分配第一内存块,再将所述第一内存块分割成多个固定大小的第二内存块的方法,实现了内存的预分配,这样,当数据块需要分配内存存储的时候,就可以直接存储在相应大小的第二内存块中,而不需要系统再分配内存,从而节约了数据读取时内存分配的时间,提高了数据读取速度,进而提升了系统的整体性能。
[0088]如图5所示,本发明实施例提供了上述大容量缓存的内存回收方法,包括如下步骤:
[0089]SI,启动定时器;
[0090]S2,获取所述数据块的访问时间和访问次数;
[0091]S3,检查所述数据块是否属于非热点数据块,如果所述数据块不属于非热点数据块,则检查下一个数据块;如果所述数据块属于非热点数据块,则执行步骤S4 ;
[0092]S4,移除所述数据块;
[0093]S5,检查所述第一内存块是否已经空闲,如果已经空闲,则释放所述第一内存块;如果没有空闲,则将所述第二内存块放入空闲内存列表。
[0094]其中,步骤S5之后,还包括,当多个所述第二内存块形成所述第一内存块后,释放所述第一内存块。
[0095]对于存放于空闲内存列表中的第二内存块,当多个第二内存块能够组成一个大的第一内存块时,就可以将该大的第一内存块进行释放,实现内存资源的回收。
[0096]本发明实施例中,通过对非热点数据块进行移除,释放所用的内存,可以实现对非热点数据所占内存的回收,从而进一步节省了内存空间。
[0097]由于第一内存块的释放是通过对数据访问时间和访问次数的检查实现的,是随着数据的不断变化而变化的,所以,可以实现内存资源回收的实时性。对于大量的数据,尤其是对于大量不断变化的数据,实时进行内存资源的回收,对节省内存资源,提高内存的利用率,具有重要的意义。
[0098]通过采用本发明公开的上述技术方案,得到了如下有益的效果:既实现了文件系统对内存的访问,减少了文件系统对磁盘的访问,提升了对大量数据的读取速度,也极大的节省了内存空间,提高了内存资源的利用率;进而提高了计算机中的程序运行速度以及计算机的整体性能。
[0099]本说明书中的各个实施例均采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似的部分互相参见即可。
[0100]本领域人员应该理解的是,上述实施例提供的方法步骤的时序可根据实际情况进行适应性调整,也可根据实际情况并发进行。
[0101]上述实施例涉及的方法中的全部或部分步骤可以通过程序来指令相关的硬件来完成,所述的程序可以存储于计算机设备可读取的存储介质中,用于执行上述各实施例方法所述的全部或部分步骤。所述计算机设备,例如:个人计算机、服务器、网络设备、智能移动终端、智能家居设备、穿戴式智能设备、车载智能设备等;所述的存储介质,例如:RAM、ROM、磁碟、磁带、光盘、闪存、U盘、移动硬盘、存储卡、记忆棒、网络服务器存储、网络云存储坐寸ο
[0102]最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
[0103]以上所述仅是本发明的优选实施方式,应当指出,对于本【技术领域】的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视本发明的保护范围。
【权利要求】
1.一种大容量缓存,其特征在于,包括, 数据存储模块:用于以数据块的形式存储数据 数据读取模块:用于以数据块的形式读取数据。
2.根据权利要求1所述的大容量,其特征在于,还包括, 内存分配模块:用于无空闲内存时,从内存池中分配第一内存块,并将所述第一内存块分割成多个固定大小的第二内存块。
3.根据权利要求2所述的大容量缓存,其特征在于,还包括, 内存回收模块:用于基于数据访问时间和访问次数的更新,进行内存的回收。
4.权利要求1所述的大容量缓存的数据存储方法,其特征在于,包括如下步骤: S1,接收数据块和所述数据块对应的特征码; S2,用所述特征码检索所述数据块,如果检索到所述数据块,则抛弃接收到的所述数据块和所述特征码;如果没有检索到所述数据块,则执行步骤S3 ; S3,保存所述数据块和所述特征码; S4,建立特征码索引表,所述特征码索引表包括所述特征码和与其对应的数据块; S5,更新所述数据块的访问时间和访问次数。
5.根据权利要求4所述的大容量缓存的数据存储方法,其特征在于,步骤S1之前,还包括步骤,计算所述数据块的特征码。
6.根据权利要求5所述的大容量缓存的数据存储方法,其特征在于,所述计算所述数据块的特征码,具体为,计算所述数据块的MD5值。
7.权利要求1所述的大容量缓存的数据读取方法,其特征在于,包括如下步骤: S1,接收数据块对应的特征码; S2,用所述特征码检索所述数据块,如果检索到所述数据块,则执行步骤S3 ;如果没有检索到所述数据块,则抛弃接收到的所述特征码; S3,读取所述数据块; S4,保存所述特征码; S5,建立特征码索引表,所述特征码索引表包括所述特征码和与其对应的数据块; S6,更新所述数据块的访问时间和访问次数。
8.权利要求2所述的大容量缓存的内存分配方法,其特征在于,包括如下步骤: S1,检查空闲内存列表,如果没有空闲内存,则执行步骤S2-S5 ;如果有空闲内存,则执行步骤S4-S5 ; S2,从内存池中分配第一内存块,并将所述第一内存块分割成多个固定大小的第二内存块; S3,将所述第二内存块添加到所述空闲内存列表中; S4,从所述空闲内存列表中获取内存; S5,在所述空闲内存列表中,将所述内存标记为已使用。
9.权利要求3所述的大容量缓存的内存回收方法,其特征在于,包括如下步骤: S1,启动定时器; S2,获取所述数据块的访问时间和访问次数; S3,检查所述数据块是否属于非热点数据块,如果所述数据块不属于非热点数据块,则检查下一个数据块;如果所述数据块属于非热点数据块,则执行步骤S4 ; S4,移除所述数据块; S5,检查所述第一内存块是否已经空闲,如果已经空闲,则释放所述第一内存块;如果没有空闲,则将所述第二内存块放入空闲内存列表。
10.根据权利要求9所述的内存回收方法,其特征在于,步骤S5之后,还包括,当多个所述第二内存块形成所述第一内存块后,释放所述第一内存块。
【文档编号】G06F12/08GK104317735SQ201410495580
【公开日】2015年1月28日 申请日期:2014年9月24日 优先权日:2014年9月24日
【发明者】杨耀敏, 易乐天, 曲维杰 申请人:北京云巢动脉科技有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1