文件缓存方法及装置的制作方法

文档序号:6358137阅读:262来源:国知局
专利名称:文件缓存方法及装置的制作方法
技术领域
本发明涉及文件缓存领域,特别涉及一种文件缓存方法及装置。
背景技术
随着信息化社会的发展,计算机病毒的威胁日益严重。那么,为了降低及避免计算机病毒对计算机所存储文件的威胁,目前常用的解决办法是使用杀毒软件来实时监控和扫描计算机磁盘上所存储的文件,以及时查杀病毒,保障存储文件的安全。为了提高扫描计算机磁盘上所存储文件的速度,大部分的杀毒软件会将曾扫描过的文件内容(包括文件名、存储路径等资源)存放在内存里,此时被占用的内存空间被称为缓存。以后每次扫描计算机磁盘上所存储的文件时,杀毒软件会首先搜索缓存,如果缓存中存储有本次扫描的文件内容,则不必从计算机磁盘上获取,直接从缓存中取出即可,从而提高扫描速度。现有技术中,采用基于文件名的缓存方法。具体地,整个计算机磁盘共用一个缓存,且缓存的空间大小固定;将文件的文件名作为关键值来进行哈希运算,得到的哈希值便对应一块连续的存储空间,将文件存入到该哈希值对应的内存中,缓存中则存储文件的文件名与文件存储地址间对应关系的哈希表。由上可知,一旦文件被重命名,就需要重新计算其哈希值,尤其是对于多级文件目录下的文件,一旦某一级文件目录的名字发生变化,将导致该变化文件目录下的所有文件都需要重新计算其哈希值,带来很大的工作量,从而影响文件缓存的效率。

发明内容
为了解决上述技术问题,本发明实施例提供了一种文件缓存方法及装置。所述技术方案如下一种文件缓存的方法,所述方法包括获取文件节点,所述文件节点包括文件ID ;根据所述文件ID及预设哈希函数计算得到所述文件节点对应的哈希地址;判断缓存哈希表中所述哈希地址中是否存储有所述文件节点,如果未存储有所述文件节点,将所述文件节点放入所述缓存哈希表中。一种文件缓存的装置,所述装置包括获取模块、计算模块、判断模块和执行模块;所述获取模块,用于获取文件节点,所述文件节点包括文件ID ;所述计算模块,用于根据所述获取模块获得的文件ID及预设哈希函数计算得到所述文件节点对应的哈希地址;所述判断模块,用于判断缓存哈希表中所述计算模块计算得到的哈希地址中是否存储有所述文件节点;所述执行模块,用于当所述判断模块的判断结果为未存储有所述文件节点时,将所述文件节点放入所述缓存哈希表中。通过采用基于文件ID的文件缓存方法,当文件名被重命名时,文件ID并不会发生变化,使得文件的缓存不会受文件重命名的影响,并且文件ID与文件名相比,在利用哈希函数进行哈希地址的运算时,使得计算更为简单。


图I是本发明实施例I中提供的一种文件缓存的方法流程图;图2是本发明实施例2中提供的一种文件缓存的方法流程图;图3是本发明实施例2中提供的基于每个卷独立的缓存结构图;图4是本发明实施例2中提供的一种URL索引表不意图;
图5是本发明实施例3中提供的一种文件缓存的装置框图;图6是本发明实施例4中提供的一种文件缓存的装置框图。
具体实施例方式为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。实施例I参见图1,一种文件缓存的方法,该方法的执行主体包括但不限于计算机等设备,具体步骤如下步骤101 :获取文件节点,该文件节点包括文件ID ;步骤102 :根据该文件ID及预设哈希函数计算得到该文件节点对应的哈希地址;步骤103 :判断缓存哈希表中该哈希地址中是否存储有该文件节点;步骤104 :如果未存储有该文件节点,将所述文件节点放入所述缓存哈希表中。通过采用基于文件ID的文件缓存方法,当文件名被重命名时,文件ID并不会发生变化,使得文件的缓存不会受文件重命名的影响,并且文件ID与文件名相比,在利用哈希函数进行哈希地址的运算时,使得计算更为简单。实施例2本发明提出了一种文件缓存的方法,主要指导思想是为磁盘的每个卷分配一个预定大小的缓存,即每个卷都对应一个缓存哈希表;根据文件ID对文件进行本地缓存,即在缓存哈希表中根据文件ID对文件节点进行插入、查找及删除等操作;另外,当缓存被占满时,首先释放缓存中那些最长时间未被使用的文件,再释放那些按照一定统计规则估计出来的未来被使用的可能性最低的文件,如此就能实现对缓存文件进行选择性淘汰,以提高扫描的响应效率。参见图2,一种文件缓存的方法,该方法的执行主体包括但不限于计算机等设备,具体步骤如下步骤201 :为磁盘的每个卷建立一个缓存哈希表,该缓存哈希表包括文件节点和文件节点对应的哈希地址,其中,缓存哈希表采用平衡二叉树或链表的存储结构;这里,将一个磁盘分区称为一个卷,卷由卷ID来唯一标识,通常有两大类型系统卷和普通卷。其中,系统卷通常用于存储系统文件,如计算机C盘便是一个系统卷,普通卷通常用于存储用户文件,如计算机上的本地磁盘D和E等均是普通卷。
具体地,系统卷的缓存默认可以存储50000个文件节点,普通卷的缓存默认可以存储5000个文件节点。其中,文件节点包括文件ID和文件的访问次数,除此之外还可以包括文件插入时间、文件信任度和文件连接关系等内容;本发明实施例重点利用文件节点中的文件ID和文件的访问次数来实现文件缓存,文件节点中的其他内容不再本发明实施例的保护范围之内,此处就不再叙述。参见图3,图3示例性地给出了一个系统卷、两个普通卷所对应的缓存哈希表的情况。 这里,缓存哈希表采用平衡二叉树或链表的存储结构的好处在于若哈希函数f对不同节点的关键字得到相同的哈希地址时,如关键字Kl古K2,而哈希地址f (Kl)=f(K2),可以将哈希地址相同的不同的关键字连接在同一个单链表中,这种存储结构为平衡二叉树或链表结构。本发明实施例采用哈希(即关键字-地址转换法)法来建立文件的缓存哈希表。哈希法的基本思想是以节点的关键字K为自变量,通过一个确定的函数关系f,计算出对应的函数值f (K),把函数值f (K)解释为节点的存储地址,将节点存入f (K)所指的存储位置上。用哈希法存储的线性表叫做哈希表,哈希表项给出了节点的关键字与存储地址间的对应关系,函数f称为哈希函数,f (K)称为哈希地址。具体地,本发明实施例对文件进行缓存时,采用文件节点中的文件ID作为关键字。下面以构建QQ杀毒软件已扫描文件的缓存哈希表为例来说明缓存哈希表的构建过程QQ杀毒软件已扫描过的文件有{文件1,文件2,......,文件25,......},而文件
ID对应的集合K= {0,1,......,25,......},选择哈希函数F,该哈希函数F (K)的取值为
K,即F(K) = K。那么,构建的缓存哈希表如表I所示表I
权利要求
1.一种文件缓存的方法,其特征在于,所述方法包括 获取文件节点,所述文件节点包括文件ID ; 根据所述文件ID及预设哈希函数计算得到所述文件节点对应的哈希地址; 判断缓存哈希表中所述哈希地址中是否存储有所述文件节点, 如果未存储有所述文件节点,将所述文件节点放入所述缓存哈希表中。
2.根据权利要求I所述的方法,其特征在于,所述将所述文件节点放入所述缓存哈希表中,包括 计算所述缓存哈希表的剩余容量; 判断所述剩余容量是否小于所述文件节点的大小, 如果小于,释放所述缓存哈希表中访问次数小于预设值的文件节点,返回所述计算所述缓存哈希表的剩余容量的操作; 如果不小于,将所述文件节点放入所述缓存哈希表中。
3.根据权利要求2所述的方法,其特征在于,所述将所述文件节点放入所述缓存哈希表中,包括将所述文件节点放入所述缓存哈希表中所述哈希地址对应的平衡二叉树或链表中。
4.根据权利要求I所述的方法,其特征在于,所述方法还包括 建立卷对应的缓存哈希表,所述卷对应的缓存哈希表由卷ID标识; 相应地,所述判断缓存哈希表中所述哈希地址中是否存储有所述文件节点之前包括 获取所述文件节点所在卷的卷ID ; 根据获取的卷ID查找得到所述文件节点所在卷对应的缓存哈希表。
5.一种文件缓存的装置,其特征在于,所述装置包括获取模块、计算模块、判断模块和执行模块; 所述获取模块,用于获取文件节点,所述文件节点包括文件ID ; 所述计算模块,用于根据所述获取模块获得的文件ID及预设哈希函数计算得到所述文件节点对应的哈希地址; 所述判断模块,用于判断缓存哈希表中所述计算模块计算得到的哈希地址中是否存储有所述文件节点; 所述执行模块,用于当所述判断模块的判断结果为未存储有所述文件节点时,将所述文件节点放入所述缓存哈希表中。
6.根据权利要求5所述的装置,其特征在于,所述执行模块,包括 计算单元,用于计算所述缓存哈希表的剩余容量; 判断单元,用于判断所述计算单元得到的剩余容量是否小于所述文件节点的大小;第一执行单元,用于当所述判断单元的判断结果为小于时,释放所述缓存哈希表中访问次数小于预设值的文件节点,返回所述计算单元; 第二执行单元,用于当所述判断单元的判断结果为不小于时,将所述文件节点放入所述缓存哈希表中。
7.根据权利要求6所述的装置,其特征在于,所述第二执行单元,具体用于将所述文件节点放入所述缓存哈希表中所述哈希地址对应的平衡二叉树或链表中。
8.根据权利要求5所述的装置,其特征在于,所述装置还包括建立模块,用于建立卷对应的缓存哈希表,所述卷对应的缓存哈希表由卷ID标识; 第二获取模块,用于获取所述文件节点所在卷的卷ID ; 查找模块,用于根据所述第二获取模块获取的卷ID查找得到所述文件节点所在卷对应的缓存哈希表。
全文摘要
本发明公开了一种文件缓存的方法及装置,属于文件缓存领域。方法包括获取文件节点,所述文件节点包括文件ID;根据所述文件ID及预设哈希函数计算得到所述文件节点对应的哈希地址;判断缓存哈希表中所述哈希地址中是否存储有所述文件节点,如果未存储有所述文件节点,将所述文件节点放入所述缓存哈希表中。实现了基于文件ID的文件缓存,使得文件的缓存不会受文件重命名的影响,并且文件ID与文件名相比,在利用哈希函数进行哈希地址的运算时,使得计算更为简单。
文档编号G06F17/30GK102737064SQ20111009547
公开日2012年10月17日 申请日期2011年4月15日 优先权日2011年4月15日
发明者谢飞, 高小明 申请人:腾讯科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1