CN103488772A - 一种通过外存对文件进行缓存的方法、***及设备 - Google Patents
一种通过外存对文件进行缓存的方法、***及设备 Download PDFInfo
- Publication number
- CN103488772A CN103488772A CN201310452157.3A CN201310452157A CN103488772A CN 103488772 A CN103488772 A CN 103488772A CN 201310452157 A CN201310452157 A CN 201310452157A CN 103488772 A CN103488772 A CN 103488772A
- Authority
- CN
- China
- Prior art keywords
- file
- buffer memory
- document
- read
- index
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
- G06F16/134—Distributed indices
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种通过外存对文件进行缓存的方法、***及设备,将需要缓存的数据存储于外存之中,极大地增加缓存数据的容量,同时为缓存数据增加缓存索引,在检索时,快速地检索到,加快检索时间;对于文件发生变化或初次读取,需要写入至缓存数据的文件,读取时按照常规流程进行读取,并在读取的同时,将这些文件存储于缓存队列中,并通过此缓存队列将这些文件写入至缓存数据,使常规读取与缓存写入同时进行,并在下次读取时,更加快速地从缓存数据中进行读取,从而加快读写速度。
Description
技术领域
本发明涉及文件的缓存,特别是一种通过外存对文件进行缓存的方法、***及设备。
背景技术
缓存是一种临时文件交换区,现有的技术方法是通过缓存存储器(RAM)或高速缓存(cache)对最近访问的信息进行临时存储,在需要访问时从中读取,从而实现快速访问,节省时间。但RAM与高速缓存普遍存在的问题是,一旦断电,缓存数据就会消失,需要重新存储;同时,相对于硬盘等外部存储设备,RAM与高速缓存造价比较昂贵,局限于RAM与高速缓存空间的大小,缓存数据也具有限制,随着技术的发展,计算设备计算性能的提升,运行的软件程序越来越大,运行中所需要的缓存空间也随着增大,因此,需要突破现有RAM与cache缓存空间较小的限制。
除此之外,RAM与cache在缓存数据时,并不考虑缓存数据存储的位置信息,因此,在读取所需的缓存数据时,就需要逐次寻找进行读取,影响了读取效率。
发明内容
为解决上述问题,本发明的目的在于提供一种通过外存对文件进行缓存的方法、***及设备,通过外存实现缓存,扩大缓存空间,同时为缓存数据增加索引目录,实现快速读取的目的。
本发明解决其问题所采用的技术方案是:
一种通过外存对文件进行缓存的方法、***及设备,在读取文件时,检测该文件是否存在于缓存索引中,缓存索引是索引目录,此索引目录包含有存储于缓存数据中所有文件的索引项,每一文件的索引项包括该文件的文件标识、该文件的最后一次修改时间、该文件在缓存数据中的偏移值和该文件的大小。在检测所读取的文件是否在缓存索引中时,需要检索文件标识,以文件标识为哈希值为例,需要计算此文件的哈希值,若在缓存索引中找到相同的哈希值,则说明在缓存数据中有该文件,但需要进一步判断所读取的文件是否与缓存数据中存储的该文件是否一致,因为,所读取的文件可能经过了修改,因此,需要判断所读取的文件的最后一次修改时间是否与缓存索引中记录的相同,如果相同,则说明此文件没有改变,可以直接从缓存数据中读取此文件,否则,说明所读取的文件已经发生了改变,则需要按照常规的流程读取此文件,同时将此文件写入至缓存队列中;若没有在缓存索引中找到相同的哈希值,则说明此文件为初次读取,按照常规流程读取此文件即可,同时,把此文件写入至缓存队列中。
写入至缓存队列中的文件需要写入至缓存数据中,以方便下次使用,减少读取时间,缓存队列是先进先出的队列,依次读取其中的文件,每次读取后,判断该文件是否存在于缓存索引中,若存在,则说明此文件并初次读取,其已经存储于缓存数据中,则需要判断所读取的文件与缓存数据中所存储的该文件的大小,若前者小于或等于后者,则直接将其写入至缓存数据中所存储的该文件的原地址即可,否则,则需要在缓存数据的末尾开辟新的空间用于存储所读取的文件;相反,若读取的文件不存在于缓存索引中,则说明为初次读取此文件,则直接在缓存数据末尾开辟新空间,将此文件写入即可。
本发明所用于的缓存索引、缓存队列和缓存数据均通过外存实现,可使用于的设备包括计算机、掌上电脑、智能设备等,本发明于这些设备上均可实现。
本发明的有益效果是:
本发明采用一种通过外存对文件进行缓存的方法、***及设备,将需要缓存的数据存储于外存之中,极大地增加缓存数据的容量,同时为缓存数据增加缓存索引,在检索时,快速地检索到,加快检索时间;对于文件发生变化或初次读取,需要写入至缓存数据的文件,读取时按照常规流程进行读取,并在读取的同时,将这些文件存储于缓存队列中,并通过此缓存队列将这些文件写入至缓存数据,使常规读取与缓存写入同时进行,并在下次读取时,更加快速地从缓存数据中进行读取,从而加快读写速度。
附图说明
下面结合附图和实例对本发明作进一步说明。
图1是本发明所述方法的流程图;
图2是本发明所述缓存索引的示意图;
图3是本发明缓存索引与缓存数据对应关系图。
具体实施方式
参照图1所示的本发明所述方法的流程图,本发明通过外存实现数据的缓存,从而实现对文件的快速读写操作。所述方法具体如下:
在读取文件时,首先在缓存索引中进行查找,缓存索引是缓存数据的索引目录,此索引目录记录了缓存数据中所有文件的索引项,其中,缓存数据中一个文件的索引项包括该文件的文件标识、该文件的最后一次修改时间、该文件在缓存数据中的偏移值和该文件的大小,其中,文件的文件标识包括文件名、文件ID、文件哈希值中的一种或多种的组合等,但对于不同的文件标识,须保持与缓存索引中的一致。在读取文件时,通过文件标识在缓存索引中进行查找,如果查找到相同的文件标识,说明所读取的文件已经存储于缓存数据中。但需要判断所读取的文件是否已经改变,如果所读取的文件已经改变,说明存储于缓存数据中的文件需要重新写入,否则读取的文件将会不一致。因此,进一步需要判断所读取的文件的最后一次修改时间是否与缓存索引中记录的相同,如果相同,说明所读取的文件没有改动过,则可以直接从缓存数据中读取相应的文件,相反,则说明所读取的文件已经改动,不能从缓存数据中读取,只能按照常规方式进行读取,在读取的同时,该文件会被写入至缓存队列中。需要说明的是,常规读取与写入至缓存队列是并行的,互不影响,以节省时间。
如果通过文件标识在缓存索引中查找时,没有查找到相同的文件标识,则说明该文件为第一次读取,则直接进行常规读取,同时将此文件写入至缓存队列中。
至此,对于文件发生改动和初次读取的文件,都已经被写入至缓存队列中,缓存队列是先进先出的队列,写入至队列的文件为了下次读取的方便和快捷,需要将其写入至缓存数据。写入时,依次读取缓存队列中的文件,因为文件分为两种,一种是改动过的文件,一种是初次读取的文件,对于改动过的文件,其文件标识已经存储于缓存索引当中,同时缓存数据也已经存储了改动前的文件,为了节约缓存空间,需要判断此改动过的文件与缓存数据中已经存储的改动前的文件的大小,如果前者较大,则需要在缓存数据的末尾为其开辟空间,并将其写入缓存数据,相反,则可以直接将其写入至缓存数据中所存储的改动前文件的原始位置,以节约空间。对于初次读取的文件,直接在缓存数据的末尾开辟空间,空间的大小与初次读取的文件相等,然后将其写入至缓存数据即可。
最后,当缓存队列中的文件写入至缓存数据后,需要对缓存索引进行更新,即将写入的文件的索引项写入缓存索引中。
参照图2所示的缓存索引的示意图,缓存索引包括不同文件的索引项,每个文件的索引项包括四项,分别为该文件的文件标识、最后修改时间、偏移值和文件大小,文件标识包括哈希值、文件名等,在使用哈希值时,要保证计算方法的一致性,最后修改时间可以判断该文件是否进行过修改,偏移值指明了该文件在缓存数据中的位置,其大小则确定了读取时的数据范围。
参照图3所示的缓存索引与缓存数据对应关系图,缓存索引所占据的空间相对于缓存数据来讲十分小,可以方便文件的查找,节约检索的时间,缓存索引所包含的每一个索引项都对应缓存数据中的一个文件,在读取该文件时,可以快速读取。
本发明通过外存实现文件的缓存,可以扩大缓存空间,对于较大的文件也可实现缓存,如客户端10G的数据;对于缓存数据,建立了一个缓存索引项进行引导,相当于为每一个缓存文件指定了索引位置,实现快速定位,加快检索时间;对于改动的文件或初次读取的文件,将它们写入至一个缓存队列当中,在写入的同时进行常规读取,两个过程通过不同的线程进行,加快读取速度;对于缓存队列中的文件,通过后台程序的运行将其写入至缓存数据中,以方便下次读取,节约读取时间。
本发明提供了一种通过外存对文件进行缓存的***,包括:
检测模块,用于读取文件时检测所读取的文件是否存在于缓存索引中,所述缓存索引为用于记录缓存数据中所有文件的索引项的索引目录,其中,缓存数据中每一文件的索引项包括该文件的文件标识、该文件的最后一次修改时间、该文件在缓存数据中的偏移值和该文件的大小,文件标识包括文件名、哈希值等;
读取模块,用于若所读取的文件存在于缓存索引中,则判断所读取的文件的最后一次修改时间是否与缓存索引中所记录的相同,若相同,则根据缓存索引中所记录的该文件的索引项,读取存储于缓存数据中的与所读取文件相同的缓存文件,若不相同,将所读取的文件写入至缓存队列中,同时通过常规读取流程读取该文件,若所读取的文件不存在于缓存索引中,则直接将所读取的文件写入至缓存队列中,同时通过常规读取流程读取该文件;
缓存模块,用于依次读取缓存队列中的文件,并将缓存队列中的文件写入至缓存数据;以及
更新模块,用于更新缓存索引,将写入至缓存数据的文件的索引项写入至缓存索引。
其中,所述读取文件时检测所读取的文件是否存在于缓存索引中时,通过将所读取文件的文件标识在缓存索引中进行查找,若查找到相同的文件标识,则所读取的文件存在于缓存索引中,否则,不存在于缓存索引中。
其中,所述缓存队列为先进先出队列。
其中,所述将缓存队列中的文件写入到缓存数据具体为:
判断该文件是否存在于缓存索引中,若存在时,则比较该文件与存储于缓存数据中的该文件的大小,如果前者小于或等于后者,则读取该文件的内容,将其内容写入缓存数据所指定的位置,如果前者大于后者,则在缓存数据的末尾分配与该文件大小相同的空间,并将该文件写入至分配的空间中;相反,若该文件不存在于缓存索引时,则直接在缓存数据的末尾分配与该文件大小相同的空间,并将该文件写入至分配的空间中。
所述***采用了以上所述方法中的内容,具体参见方法中所述。
本发明提供了一种通过外存对文件进行缓存的设备,所述设备采用了以上所述的***,所述的设备包括计算机设备,可以通过硬盘、U盘等实现本发明,还包括智能移动设备,如智能手机、掌上电脑等。
以上所述,只是本发明的较佳实施例而已,本发明并不局限于上述实施方式,只要其以相同的手段达到本发明的技术效果,都应属于本发明的保护范围。
Claims (13)
1.一种通过外存对文件进行缓存的方法,其特征在于,包括:
读取文件时检测所读取的文件是否存在于缓存索引中,所述缓存索引为用于记录缓存数据中所有文件的索引项的索引目录;
若所读取的文件存在于缓存索引中,则判断所读取的文件的最后一次修改时间是否与缓存索引中所记录的相同,若相同,则根据缓存索引中所记录的该文件的索引项,读取存储于缓存数据中的与所读取的文件相同的缓存文件,若不相同,将所读取的文件写入至缓存队列中,同时通过常规读取流程读取该文件,若所读取的文件不存在于缓存索引中,则直接将所读取的文件写入至缓存队列中,同时通过常规读取流程读取该文件;以及
依次读取缓存队列中的文件,并将缓存队列中的文件写入至缓存数据。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
更新缓存索引,将写入至缓存数据的文件的索引项写入至缓存索引。
3.根据权利要求1或2所述的方法,其特征在于,所述缓存索引作为用于记录缓存数据中所有文件的索引项的索引目录,其每一文件的索引项包括该文件的文件标识、该文件的最后一次修改时间、该文件在缓存数据中的偏移值和该文件的大小。
4.根据权利要求3所述的方法,其特征在于,所述读取文件时检测所读取的文件是否存在于缓存索引中时,通过将所读取文件的文件标识在缓存索引中进行查找,若查找到相同的文件标识,则所读取的文件存在于缓存索引中,否则,不存在于缓存索引中。
5.根据权利要求3所述的方法,其特征在于,所述缓存队列为先进先出队列。
6.根据权利要求3所述的方法,其特征在于,所述将缓存队列中的文件写入到缓存数据具体为:
判断该文件是否存在于缓存索引中,若存在时,则比较该文件与存储于缓存数据中的该文件的大小,如果前者小于或等于后者,则读取该文件的内容,将其内容写入缓存数据所指定的位置,如果前者大于后者,则在缓存数据的末尾分配与该文件大小相同的空间,并将该文件写入至分配的空间中;相反,若该文件不存在于缓存索引时,则直接在缓存数据的末尾分配与该文件大小相同的空间,并将该文件写入至分配的空间中。
7.一种通过外存对文件进行缓存的***,其特征在于,包括:
检测模块,用于读取文件时检测所读取的文件是否存在于缓存索引中,所述缓存索引为用于记录缓存数据中所有文件的索引项的索引目录;
读取模块,用于若所读取的文件存在于缓存索引中,则判断所读取的文件的最后一次修改时间是否与缓存索引中所记录的相同,若相同,则根据缓存索引中所记录的该文件的索引项,读取存储于缓存数据中的与所读取文件相同的缓存文件,若不相同,将所读取的文件写入至缓存队列中,同时通过常规读取流程读取该文件,若所读取的文件不存在于缓存索引中,则直接将所读取的文件写入至缓存队列中,同时通过常规读取流程读取该文件;以及
缓存模块,用于依次读取缓存队列中的文件,并将缓存队列中的文件写入至缓存数据。
8.根据权利要求7所述的***,其特征在于,所述***还包括:
更新模块,用于更新缓存索引,将写入至缓存数据的文件的索引项写入至缓存索引。
9.根据权利要求7或8所述的***,其特征在于,所述缓存索引作为用于记录缓存数据中所有文件的索引项的索引目录,其每一文件的索引项包括该文件的文件标识、该文件的最后一次修改时间、该文件在缓存数据中的偏移值和该文件的大小。
10.根据权利要求9所述的***,其特征在于,所述读取文件时检测所读取的文件是否存在于缓存索引中时,通过将所读取文件的文件标识在缓存索引中进行查找,若查找到相同的文件标识,则所读取的文件存在于缓存索引中,否则,不存在于缓存索引中。
11.根据权利要求9所述的***,其特征在于,所述缓存队列为先进先出队列。
12.根据权利要求9所述的***,其特征在于,所述将缓存队列中的文件写入到缓存数据具体为:
判断该文件是否存在于缓存索引中,若存在时,则比较该文件与存储于缓存数据中的该文件的大小,如果前者小于或等于后者,则读取该文件的内容,将其内容写入缓存数据所指定的位置,如果前者大于后者,则在缓存数据的末尾分配与该文件大小相同的空间,并将该文件写入至分配的空间中;相反,若该文件不存在于缓存索引时,则直接在缓存数据的末尾分配与该文件大小相同的空间,并将该文件写入至分配的空间中。
13.一种通过外存对文件进行缓存的设备,其特征在于,所述设备包括权利要求7至12任一所述的***。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310452157.3A CN103488772A (zh) | 2013-09-27 | 2013-09-27 | 一种通过外存对文件进行缓存的方法、***及设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201310452157.3A CN103488772A (zh) | 2013-09-27 | 2013-09-27 | 一种通过外存对文件进行缓存的方法、***及设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN103488772A true CN103488772A (zh) | 2014-01-01 |
Family
ID=49828998
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201310452157.3A Pending CN103488772A (zh) | 2013-09-27 | 2013-09-27 | 一种通过外存对文件进行缓存的方法、***及设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN103488772A (zh) |
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636464A (zh) * | 2015-02-09 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 访问文件的方法和装置 |
CN106815329A (zh) * | 2016-12-29 | 2017-06-09 | 网易无尾熊(杭州)科技有限公司 | 一种缓存数据的更新方法及装置 |
CN107038180A (zh) * | 2016-08-23 | 2017-08-11 | 平安科技(深圳)有限公司 | 投保单信息更新方法及管理服务器 |
CN109634877A (zh) * | 2018-12-07 | 2019-04-16 | 广州市百果园信息技术有限公司 | 流操作的实现方法、装置、设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169761A (zh) * | 2007-12-03 | 2008-04-30 | 腾讯数码(天津)有限公司 | 大容量缓存实现方法及存储*** |
CN101291347A (zh) * | 2008-06-06 | 2008-10-22 | 中国科学院计算技术研究所 | 一种网络存储*** |
CN102662459A (zh) * | 2012-04-22 | 2012-09-12 | 复旦大学 | 利用固态硬盘与机械硬盘混合存储减少服务器能源消耗的方法 |
CN102843396A (zh) * | 2011-06-22 | 2012-12-26 | 中兴通讯股份有限公司 | 一种分布式缓存***中的数据写入及读取方法及装置 |
-
2013
- 2013-09-27 CN CN201310452157.3A patent/CN103488772A/zh active Pending
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101169761A (zh) * | 2007-12-03 | 2008-04-30 | 腾讯数码(天津)有限公司 | 大容量缓存实现方法及存储*** |
CN101291347A (zh) * | 2008-06-06 | 2008-10-22 | 中国科学院计算技术研究所 | 一种网络存储*** |
CN102843396A (zh) * | 2011-06-22 | 2012-12-26 | 中兴通讯股份有限公司 | 一种分布式缓存***中的数据写入及读取方法及装置 |
CN102662459A (zh) * | 2012-04-22 | 2012-09-12 | 复旦大学 | 利用固态硬盘与机械硬盘混合存储减少服务器能源消耗的方法 |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104636464A (zh) * | 2015-02-09 | 2015-05-20 | 腾讯科技(深圳)有限公司 | 访问文件的方法和装置 |
CN104636464B (zh) * | 2015-02-09 | 2019-02-01 | 腾讯科技(深圳)有限公司 | 访问文件的方法和装置 |
CN107038180A (zh) * | 2016-08-23 | 2017-08-11 | 平安科技(深圳)有限公司 | 投保单信息更新方法及管理服务器 |
WO2018036152A1 (zh) * | 2016-08-23 | 2018-03-01 | 平安科技(深圳)有限公司 | 投保单信息更新方法、管理服务器及计算机可读存储介质 |
CN106815329A (zh) * | 2016-12-29 | 2017-06-09 | 网易无尾熊(杭州)科技有限公司 | 一种缓存数据的更新方法及装置 |
CN109634877A (zh) * | 2018-12-07 | 2019-04-16 | 广州市百果园信息技术有限公司 | 流操作的实现方法、装置、设备及存储介质 |
CN109634877B (zh) * | 2018-12-07 | 2023-07-21 | 广州市百果园信息技术有限公司 | 流操作的实现方法、装置、设备及存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
KR102584018B1 (ko) | 압축된 데이터 백그라운드를 캐싱하는 장치, 시스템 및 방법 | |
US8595451B2 (en) | Managing a storage cache utilizing externally assigned cache priority tags | |
CN107168657B (zh) | 一种基于分布式块存储的虚拟磁盘分层缓存设计方法 | |
CN101673188B (zh) | 一种固态硬盘的数据存取方法 | |
CN102782683B (zh) | 用于数据库服务器的缓冲池扩展 | |
CN101981551B (zh) | 用于高速缓存利用的设备和方法 | |
CN105183839A (zh) | 一种基于Hadoop的小文件分级索引的存储优化方法 | |
CN105242871A (zh) | 一种数据写入方法及装置 | |
KR20090026296A (ko) | 예측 데이터 로더 | |
CN103049224B (zh) | 将数据导入物理磁带的方法、装置和*** | |
US10489296B2 (en) | Quality of cache management in a computer | |
CN101645043A (zh) | 写数据的方法、读数据的方法及存储设备 | |
CN103345449B (zh) | 一种面向重复数据删除技术的指纹预取方法及*** | |
CN100458736C (zh) | Nand闪存信息提取方法和nand闪存自动识别方法 | |
CN103399823A (zh) | 业务数据的存储方法、设备和*** | |
CN103150395A (zh) | 基于ssd的文件***目录路径解析方法 | |
CN105787012A (zh) | 一种提高存储***处理小文件的方法以及存储*** | |
CN103136215A (zh) | 存储***的数据读写方法和装置 | |
CN103488772A (zh) | 一种通过外存对文件进行缓存的方法、***及设备 | |
SG126863A1 (en) | Recording apparatus | |
CN105608013B (zh) | 一种集成mram的存储卡控制芯片及存储卡 | |
CN100580669C (zh) | 在Flash存储介质上的关于文件分配表的缓存实现方法 | |
US9524236B1 (en) | Systems and methods for performing memory management based on data access properties | |
CN104407990B (zh) | 一种磁盘访问方法及装置 | |
CN102981975A (zh) | 闪存数据的管理方法和*** |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
RJ01 | Rejection of invention patent application after publication | ||
RJ01 | Rejection of invention patent application after publication |
Application publication date: 20140101 |