CN117539409B - 基于数据缓存的查询加速方法、装置、介质及电子设备 - Google Patents
基于数据缓存的查询加速方法、装置、介质及电子设备 Download PDFInfo
- Publication number
- CN117539409B CN117539409B CN202410035076.1A CN202410035076A CN117539409B CN 117539409 B CN117539409 B CN 117539409B CN 202410035076 A CN202410035076 A CN 202410035076A CN 117539409 B CN117539409 B CN 117539409B
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- linked list
- target
- cached
- 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.)
- Active
Links
- 238000000034 method Methods 0.000 title claims abstract description 45
- 230000001133 acceleration Effects 0.000 title claims abstract description 33
- 238000011084 recovery Methods 0.000 claims abstract description 18
- 238000004590 computer program Methods 0.000 claims description 18
- 230000008030 elimination Effects 0.000 claims description 15
- 238000003379 elimination reaction Methods 0.000 claims description 15
- 238000013524 data verification Methods 0.000 claims description 6
- 230000000694 effects Effects 0.000 abstract description 2
- 238000010586 diagram Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 4
- 238000003491 array Methods 0.000 description 3
- 238000004422 calculation algorithm Methods 0.000 description 3
- 238000012217 deletion Methods 0.000 description 3
- 230000037430 deletion Effects 0.000 description 3
- 230000008569 process Effects 0.000 description 3
- 238000012795 verification Methods 0.000 description 3
- 230000006978 adaptation Effects 0.000 description 2
- 230000003321 amplification Effects 0.000 description 2
- 238000013461 design Methods 0.000 description 2
- 238000003780 insertion Methods 0.000 description 2
- 230000037431 insertion Effects 0.000 description 2
- 238000003199 nucleic acid amplification method Methods 0.000 description 2
- 238000012545 processing Methods 0.000 description 2
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000005540 biological transmission Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000004140 cleaning Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 230000010354 integration Effects 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000000737 periodic effect Effects 0.000 description 1
- 238000004064 recycling Methods 0.000 description 1
- 238000012216 screening Methods 0.000 description 1
- 238000000926 separation method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/064—Management of blocks
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0638—Organizing or formatting or addressing of data
- G06F3/0644—Management of space entities, e.g. partitions, extents, pools
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Human Computer Interaction (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种基于数据缓存的查询加速方法、装置、介质及电子设备,涉及数据缓存技术领域,其中方法包括:获取待缓存数据,并在内存缓存达到上限情况下,确定所述待缓存数据在磁盘中对应的目标缓存目录;从所述目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块;若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace;在所述目标FreeSpace处于所述目标缓存目录对应的非空闲区链表时,将所述目标FreeSpace从所述非空闲区链表移动至所述空闲区链表中。本申请具有提升数据块的分配和回收的效率的效果。
Description
技术领域
本申请涉及数据缓存技术领域,具体涉及一种基于数据缓存的查询加速方法、装置、介质及电子设备。
背景技术
在当前存算分离、湖仓一体等潮流下,云存储系统凭借其高可用、低成本等优势,成为许多业务进行数据存储的首选。其中,云存储系统属于远端存储系统。它是将数据保存到由第三方维护的存储系统,而不是存储信息到计算机的硬盘驱动器或其他本地存储设备。但是由于远端存储系统在访问延迟的问题较为明显,导致远端查询数据速度缓慢。基于此,不少系统通常会通过本地缓存的方式来进行远端查询加速。
目前,一种常见的本地缓存的模式为:先将数据缓存储到内存中,内存缓存达到上限后,再通过磁盘进行数据缓存,其中,磁盘缓存过程中,缓存目录中的内容会以大文件的形式进行存储,再配合bitmap结构进行磁盘空间的管理,当磁盘空间较大时,导致数据块的分配和回收复杂度较高,效率较低。
发明内容
为了提升数据块的分配和回收的效率,本申请提供一种基于数据缓存的查询加速方法、装置、介质及电子设备。
在本申请的第一方面提供了一种基于数据缓存的查询加速方法,具体包括:
获取待缓存数据,并在内存缓存达到上限情况下,确定所述待缓存数据在磁盘中对应的目标缓存目录;
从所述目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块,所述空闲区链表中包括至少一个可用FreeSpace,所述可用FreeSpace包括至少一个可用数据块;
若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace;
在所述目标FreeSpace处于所述目标缓存目录对应的非空闲区链表时,将所述目标FreeSpace从所述非空闲区链表移动至所述空闲区链表中,所述非空闲区链表包括至少一个非可用FreeSpace。
通过采用上述技术方案,当有数据需要进行本地缓存并且内存已满时,将待缓存数据在磁盘中进行缓存,需要进行数据块的分配,那么先从目标缓存目录对应的空闲区链表中选取可以分配可用数据块的可用FreeSpace,进而快速从中确定可用数据块并分配给此待缓存数据;如果存在已分配的数据块需要回收,那么溯源待回收数据块所属的目标FreeSpace,即,确定之前分配此待回收数据块的可用FreeSpace。如果目标FreeSpace属于非空闲区链表,说明其在回收此待回收数据块之前不存在可用数据块,那么回收后此目标FreeSpace变为可分配可用数据块的可用FreeSpace,将其从非空闲区链表移动到空闲区链表,实时更新非空闲区链表和空闲区链表。从而通过空闲区链表和非空闲区链表的方式,提升数据块的分配和回收的效率。
可选的,所述若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace,具体包括:
若各所述已缓存数据块中存在待回收数据块,则确定FreeSpace数组的起始地址,所述FreeSpace数组包括所述空闲区链表与所述非空闲区链表中所有FreeSpace;
根据所述待回收数据块的标识符和所述起始地址,确定目标地址;
根据所述目标地址,从所述FreeSpace数组中确定目标FreeSpace。
通过采用上述技术方案,确定空闲区链表与非空闲区链表中所有FreeSpace组成的FreeSpace数组的起始地址后,进一步确定待回收数据块在FreeSpace数组对应的所有数据块的标识符,根据起始地址和标识符,得到对待回收数据块进行地址定位,确定其目标地址,最后将目标地址对应的FreeSpace确定为目标FreeSpace,即,分配此待回收数据块的FreeSpace,从而简单快速地确定待回收数据块所来源的FreeSpace,方便后续高效回收。
可选的,所述将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块之后,还包括:
将已缓存数据块拆分为若干个slice段;
从各所述slice段中确定已读取slice段,并计算所述已读取slice段的checksum值;
将所述已读取slice段对应的实际读取数据读取至内存,并根据所述checksum值对所述实际读取数据进行数据校验。
通过采用上述技术方案,从已缓存数据块中确定已读取slice段,并且只针对已读取slice段计算checksum值,即,在已缓存数据块对应的缓存数据被读取时,按照slice段为单位进行读取,将实际读取的slice段作为校验对象,而不是将整个缓存数据作为校验对象,从而在支持数据校验的同时,还能尽可能避免整个对象读取导致的读放大问题。
可选的,所述方法还包括:
确定所述磁盘对应的LRU链表,所述LRU链表中存储有至少一个缓存节点;
通过预设的哨兵节点,按照API优先级将所述LRU链表划分成若干个链表段,所述API优先级为API接口传入参数的优先级,所述API优先级越低,对应的链表段在所述LRU链表中越靠前,各所述链表段中的缓存节点已按照LRU进行排序;
若存在待插入所述LRU链表中的目标节点,则通过各所述哨兵节点中所述目标节点对应的目标哨兵节点,将所述目标节点插入至所述目标哨兵节点对应的链表段中。
通过采用上述技术方案,通过哨兵节点的方式,能够较为简单地将LRU链表划分为优先级不同的链表段,无需繁琐地创建多个优先级不同的LRU链表,进而使得LRU链表中的数据能按不同优先级进行淘汰删除。另外,目标哨兵节点还能便捷准确地将目标节点,即,新缓存节点插入到对应优先级的链表段中,无需后续再重复进行优先级划分。
可选的,所述按照API优先级将所述LRU链表拆分成若干个链表段之后,还包括:
在需要淘汰缓存数据的情况下,按照从前往后的顺序,对所述LRU链表中缓存节点对应的缓存数据进行淘汰。
通过采用上述技术方案,由于LRU链表中每个链表段中的缓存节点已按照LRU进行排序,即,最近被访问的数据将具有更高的优先级,排序靠后,而较早被访问的数据则具有较低的优先级,排序靠后。而且LRU链表中各个链表段也是按照API优先级从低到高进行排序。使得在对不同优先级的缓存数据按照LRU淘汰时,直接对LRU链表从前往后进行淘汰即可,无需跨越不同优先级的LRU链表,进而提高缓存数据淘汰效率。
可选的,所述方法还包括:
通过std::map存储已缓存数据对应的缓存元数据,得到存储集合,所述缓存元数据包括到期时间,所述存储集合中,到期时间越靠后,对应的缓存元数据排序越靠后;
在检查各所述已缓存数据中的过期数据时,若所述存储集合中的第一个缓存元数据的到期时间为未过期状态,则停止检查;
根据所述第一个缓存元数据的到期时间和当前时间,确定剩余生命时长,并在所述当前时间之后的所述剩余生命时长内,暂停对所述第一个缓存元数据的到期时间检查;
若所述第一个缓存元数据的到期时间为过期状态,则继续按照从前往后的顺序对所述存储集合中下一个缓存元数据进行到期时间检查。
通过采用上述技术方案,采用std::map存储已缓存数据对应的缓存元数据,在存储集合中,到期时间越靠后,对应的缓存元数据排序越靠后。当需要进行过期数据淘汰删除时,如果存储集合中的第一个缓存元数据的到期时间未过期,说明其后面的缓存元数据的到期时间均未过期,无需继续往下进行过期检查,并确定第一个缓存元数据的剩余生命时长,即,确定其后续不需要检查的时间区间,反之,则继续往下检查,从而大大降低数据扫描开销。
可选的,所述缓存元数据还包括缓存标识,所述通过std::map存储已缓存数据对应的缓存元数据,得到存储集合之后,还包括:
根据各所述已缓存数据对应的到期时间,确定至少一个合并时间区间,所述合并时间区间的时间跨度为预设时长;
将到期时间处于同一所述合并时间区间内的缓存元数据进行合并,得到合并元数据;
将所述合并元数据中各缓存元数据的缓存标识对应的缓存节点进行合并,得到合并节点。
通过采用上述技术方案,到期时间处于同一个合并时间区间,说明对应的缓存数据的到期时间较为接近,那么将对应的缓存元数据合并为一个元数据,即,合并元数据,并将对应的缓存节点也合并为一个,不仅可以减少std::map中的元素数量,降低到期时间检查的强度,而且还能减少缓存节点所占空间以及查询和删除过期数据的代价。
在本申请的第二方面提供了一种基于数据缓存的查询加速装置,具体包括:
数据获取模块11,用于获取待缓存数据,并在内存缓存达到上限情况下,确定所述待缓存数据在磁盘中对应的目标缓存目录;
数据写入模块12,用于从所述目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块,所述空闲区链表中包括至少一个可用FreeSpace,所述可用FreeSpace包括至少一个可用数据块;
回收定位模块13,用于若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace;
回收挂载模块14,用于在所述目标FreeSpace处于所述目标缓存目录对应的非空闲区链表时,将所述目标FreeSpace从所述非空闲区链表移动至所述空闲区链表中,所述非空闲区链表包括至少一个非可用FreeSpace。
通过采用上述技术方案,数据获取模块获取待缓存数据,并确定其对应的目标缓存目录,然后由数据写入模块分配可用数据块,将待缓存数据写入可用数据块中,接着回收定位模块确定待回收数据块所属的目标FreeSpace。最后回收挂载模块在目标FreeSpace处于非空闲区链表中时,将目标FreeSpace从非空闲区链表移动至空闲区链表中,从而高效地完成数据块的分配和回收。
综上所述,本申请包括以下至少一种有益技术效果:
当有数据需要进行本地缓存并且内存已满时,将待缓存数据在磁盘中进行缓存,需要进行数据块的分配,那么先从目标缓存目录对应的空闲区链表中选取可以分配可用数据块的可用FreeSpace,进而快速从中确定可用数据块并分配给此待缓存数据;如果存在已分配的数据块需要回收,那么溯源待回收数据块所属的目标FreeSpace,即,确定之前分配此待回收数据块的可用FreeSpace。如果目标FreeSpace属于非空闲区链表,说明其在回收此待回收数据块之前不存在可用数据块,那么回收后此目标FreeSpace变为可分配可用数据块的可用FreeSpace,将其从非空闲区链表移动到空闲区链表,实时更新非空闲区链表和空闲区链表。从而通过空闲区链表和非空闲区链表的方式,提升数据块的分配和回收的效率。
附图说明
图1是本申请实施例提供的一种基于数据缓存的查询加速方法的流程示意图;
图2是本申请实施例提供的另一种基于数据缓存的查询加速方法的流程示意图;
图3是本申请实施例提供的一种基于数据缓存的查询加速装置的结构示意图;
图4是本申请实施例提供的另一种基于数据缓存的查询加速装置的结构示意图。
附图标记说明:11、数据获取模块;12、数据写入模块;13、回收定位模块;14、回收挂载模块;15、读取校验模块;16、节点插入模块;17、数据淘汰模块;18、过期淘汰模块;19、节点合并模块。
具体实施方式
为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本申请一部分实施例,而不是全部的实施例。
在本申请实施例的描述中,“示性的”、“例如”或者“举例来说”等词用于表示作例子、例证或说明。本申请实施例中被描述为“示性的”、“例如”或者“举例来说”的任何实施例或设计方案不应被解释为比其它实施例或设计方案更优选或更具优势。确切而言,使用“示性的”、“例如”或者“举例来说”等词旨在以具体方式呈现相关概念。
在本申请实施例的描述中,术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,单独存在B,同时存在A和B这三种情况。另外,除非另有说明,术语“多个”的含义是指两个或两个以上。例如,多个系统是指两个或两个以上的系统,多个屏幕终端是指两个或两个以上的屏幕终端。此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括一个或者更多个该特征。术语“包括”、“包含”、“具有”及它们的变形都意味着“包括但不限于”,除非是以其他方式另外特别强调。
参见图1,本申请实施例公开了一种基于数据缓存的查询加速方法的流程示意图,可依赖于计算机程序实现,也可运行于基于冯诺依曼体系的基于数据缓存的查询加速装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行,具体包括:
S101:获取待缓存数据,并在内存缓存达到上限情况下,确定待缓存数据在磁盘中对应的目标缓存目录。
具体的,待缓存数据为需要进行本地缓存的数据。本地缓存(Local Cache)指的是一种存储机制,它可以将经常使用的数据存储在本地,以减少对远端存储系统的访问次数,从而加速数据缓存的查询。其中,从缓存介质来区分,本地缓存分为内存缓存、磁盘缓存以及混合缓存。内存缓存为直接将数据存储到本机内存中,通过程序直接维护缓存对象。磁盘缓存是将数据缓存到硬盘中,读取时从硬盘读取。混合缓存即使用内存缓存+磁盘缓存的方式进行数据缓存。在本申请实施例中,本地缓存的方式为混合缓存,在其它实施例中,也可以为内存缓存或者磁盘缓存。
当存在需要缓存的待缓存数据时,上层应用程序直接调用终端中的本地缓存系统,即,进程内模块,通常为缓存模块,实现上层应用程序直接链接到进程内部,最终本地缓存系统获取到待缓存数据。在其他实施例中,上层应用程序可以提供接口或函数,将待缓存数据发送到本地缓存系统。终端可以是诸如手机、平板电脑、电子书阅读器、多媒体播放设备、可穿戴设备、个人计算机(PersonalComputer,PC)等电子设备。
如果确定内存缓存达到上限,即,内存缓存已经使用了最大容量,没有额外的空间缓存当前的待缓存数据,那么选择通过磁盘缓存的方式来对待缓存数据进行本地缓存,最后在磁盘中创建目标缓存目录,用于对待缓存数据进行本地缓存。
S102:从目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将待缓存数据写入至可用FreeSpace中的可用数据块,得到已缓存数据块。
具体的,FreeSpace指的是磁盘上当前可以用来缓存数据的磁盘空间。每个FreeSpace通过bitmap管理1024个数据块。可用FreeSpace包括至少一个可用数据块,即其中的数据块未分配完,可用的数据块不为0。空闲区链表(freelist)包括至少一个可用FreeSpace,可以理解为空闲区链表链接的是还有剩余空间的FreeSpace。
目标缓存目录确定后,为此目标缓存目录定义有一个对应的FreeSpace数组,FreeSpace数组中数据块未分配完的FreeSpace被链接到空闲区链表中,数据块分配完的FreeSpace被链接到非空闲区链表(fulllist)。当获取到待缓存数据,说明需要分配对应的数据块,那么从空闲区链表中选取第一个可用FreeSpace,然后将此待缓存数据写入到此可用FreeSpace中的可用数据块,得到已缓存数据块。如果此可用FreeSpace中可用的数据块为0,无法再为下一个待缓存数据分配供缓存的可用数据块,那么将此可用FreeSpace从空闲区链表移除,移动到非空闲区链表。需要说明的是,可用数据块为还未被分配、用于存放实际数据的实体单元。
在另一实施例中,步骤S102之后还包括:将已缓存数据块拆分为若干个slice段;
从各slice段中确定已读取slice段,并计算已读取slice段的checksum值;
将已读取slice段对应的实际读取数据读取至内存,并根据checksum值对实际读取数据进行数据校验。
具体的,slice段是指对缓存数据的引用,称为缓存片段,slice段可以用于缓存中的数据操作,其是对缓存块进一步划分的逻辑单位,也是缓存系统中进行数据读写的最小操作单位。checksum值是一种验证数据完整性的算法,它通过对数据进行计算,得到一个唯一的校验值,以确认数据的正确性和完整性。将已缓存数据块拆分为若干个slice段,从而实现对数据进行细粒度的访问控制。需要说明的是,对已缓存数据块的拆分为逻辑上的拆分。
确定用户对于已缓存数据块对应的缓存数据实际的读取范围,进而按照slice段为单位从磁盘读取相应的数据到内存中,最终将已读取slice段对应的实际读取数据读取到内存中,无需将整个缓存数据读取到内存中,从而有效避免磁盘缓存读取放大明显的问题。最后计算已读取slice段的checksum值,根据checksum值对实际读取数据进行数据校验,从而保证读取数据的完整性和正确性。此为现有技术,在此不再赘述。
S103:若各已缓存数据块中存在待回收数据块,则确定待回收数据块对应的目标FreeSpace。
在一个可实现的实施方式中,若各已缓存数据块中存在待回收数据块,则确定FreeSpace数组的起始地址;
根据待回收数据块的标识符和起始地址,确定目标地址;
根据目标地址,从FreeSpace数组中确定目标FreeSpace。
具体的,FreeSpace数组包括空闲区链表与非空闲区链表中所有FreeSpace。例如,FreeSpace数组可以为:{FreeSpace1、FreeSpace2、FreeSpace3……FreeSpaceN},空闲区链表包括:FreeSpace1、FreeSpace2、FreeSpace3。非空闲区链表包括FreeSpace4、FreeSpace5……FreeSpaceN。
按照步骤S101-S102,可得到多个已缓存数据块,如果某个已缓存数据块中存储的数据被删除或淘汰时,确定此已缓存数据块为待回收数据块,即各个已缓存数据块中存在待回收数据块。其中,数据块回收指的是不再使用的数据块进行清理和释放的过程,以便重新分配给其它文件或数据使用。
确定FreeSpace数组的起始地址,此处起始地址用p表示。接着获取待回收数据块的标识符,此处标识符用n表示,需要说明的是,在FreeSpace数组中所有数据块都有唯一的标识符,用于区分不同的数据块,并可以对数据块进行定位。
最后通过预设的公式:p + (n / 1024) * sizeof(FreeSpace),将起始地址p和标识符n分别代入其中,得到目标地址,最终根据目标地址,可以从FreeSpace数组中定位到此待回收数据块所属的目标FreeSpace,即,此待回收数据块最开始是从目标FreeSpace中分配出来的数据块。
S104:在目标FreeSpace处于目标缓存目录对应的非空闲区链表时,将目标FreeSpace从非空闲区链表移动至空闲区链表中。
具体的,目标FreeSpace确定后,判断目标FreeSpace是否处于非空闲区链表中,如果处于非空闲区链表,说明此待回收数据块在回收之前,对应的目标FreeSpace是没有可分配的数据块,回收之后,目标FreeSpace中重新存在可用的数据块,那么将此目标FreeSpace从非空闲区链表移动到空闲区链表,从而对非空闲区链表和空闲区链表进行实时更新。进一步地,将此待回收数据块的状态从使用状态修改为未使用状态。
参见图2,本申请实施例公开了另一种基于数据缓存的查询加速方法的流程示意图,可依赖于计算机程序实现,也可运行于基于冯诺依曼体系的基于数据缓存的查询加速装置上。该计算机程序可集成在应用中,也可作为独立的工具类应用运行,具体包括:
S201:获取待缓存数据,并在内存缓存达到上限情况下,确定待缓存数据在磁盘中对应的目标缓存目录。
S202:从目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将待缓存数据写入至可用FreeSpace中的可用数据块,得到已缓存数据块。
S203:若各已缓存数据块中存在待回收数据块,则确定待回收数据块对应的目标FreeSpace。
S204:在目标FreeSpace处于目标缓存目录对应的非空闲区链表时,将目标FreeSpace从非空闲区链表移动至空闲区链表中。
具体的,可参考步骤S101-S104,在此不再赘述。
S205:确定磁盘对应的LRU链表,LRU链表中存储有至少一个缓存节点。
S206:通过预设的哨兵节点,按照API优先级将LRU链表划分成若干个链表段。
具体的,缓存淘汰算法(Least Recently Used,LRU)指的是缓存空间已满时,如何选择需要淘汰的数据以腾出空间存放新数据的策略,此算法使用的数据结构为LRU结构,包括LRU链表和哈希表。LRU链表是一种用于缓存淘汰的链表结构。LRU链表通常存储有至少一个缓存节点,每个缓存节点存储有缓存数据对应的元数据,如键值。哈希表用于快速查找到具体的缓存数据。为了保证磁盘中缓存数据对应的LRU链表能够按照不同优先级淘汰,本申请实施例采用多优先级LRU方式,多优先级LRU能根据缓存数据的不同特征或属性设定优先级,当缓存空间已满时,较低优先级的数据项先于较高优先级的数据项被淘汰。
基于多优先级LRU,通常采用的方式为:针对不同优先级,创建多个LRU链表,淘汰时先从低优先级链表淘汰,当该链表中所有对象被淘汰后再去检查高优先级链表。这种方式淘汰时,需要跨越多个LRU结构,淘汰方式不够灵活。
而本申请实施例中,通过预设的哨兵节点,哨兵节点为一种特殊节点,通常在链表或树等数据结构中使用,用于简化边界情况的处理。通过不同的哨兵节点将LRU链表划分成不同的链表段,一种可行的划分方式为:根据API优先级将LRU链表中的缓存节点进行分类,进而将LRU链表划分为API优先级不同的链表段,从而无需针对不同优先级,创建不同的LRU链表。其中,API优先级指的是在使用缓存时,API接口传入参数的优先级,即,API调用时,针对不同缓存数据传入的不同优先级参数。另外,API优先级越低,对应的链表段在LRU链表中越靠前,而且各个链表段中的缓存节点已按照LRU进行排序。
S207:若存在待插入LRU链表中的目标节点,则通过各哨兵节点中目标节点对应的目标哨兵节点,将目标节点插入至目标哨兵节点对应的链表段中。
具体的,如果有新的数据在磁盘中进行本地缓存,说明当前存在需要插入到LRU链表中的全新缓存节点,即,目标节点。由于哨兵节点本身具有将缓存节点插入到LRU链表中的功能,因此根据API优先级选取对应的目标哨兵节点,快速找到对应链表段的头部,从而确定此目标节点应该插入的位置。进一步地,通过目标哨兵节点将目标节点插入到相应位置。
S208:在需要淘汰缓存数据的情况下,按照从前往后的顺序,对LRU链表中缓存节点对应的缓存数据进行淘汰。
具体的,将LRU链表划分成不同链表段后,将每个链表段中的缓存节点已经按照访问时间戳进行排序,即按照LRU进行排序,访问时间戳越早,越久未被使用,在链表段内的排序越靠前,越容易先被删除。
如果检测到磁盘或者内存的缓存已满,需要进行缓存数据淘汰删除时,那么确定淘汰顺序为:从LRU链表的头部到尾部,即,按照从前往后的顺序,从低优先级往高优先级的顺序,对各个链表段中的缓存节点进行淘汰。对当前的链表段中的缓存节点进行淘汰删除时,按照LRU排序后的从前往后的顺序,即LRU从老到新的顺序,对当前的链表段中的缓存节点进行淘汰删除,从而使得淘汰效率更高,避免遍历多次LRU链表。
在其它实施例中,对磁盘或内存中的已缓存数据进行过期淘汰时,一种可实现的实施方式为:通过std::map存储已缓存数据对应的缓存元数据,得到存储集合;
在检查各已缓存数据中的过期数据时,若存储集合中的第一个缓存元数据的到期时间为未过期状态,则停止检查;
根据第一个缓存元数据的到期时间和当前时间,确定剩余生命时长,并在当前时间之后的剩余生命时长内,暂停对第一个缓存元数据的到期时间检查;
若第一个缓存元数据的到期时间为过期状态,则继续按照从前往后的顺序对存储集合中下一个缓存元数据进行到期时间检查。
具体的,过期淘汰(Time To Live,TTL)是一种不同于LRU的缓存数据淘汰策略,它根据缓存数据的过期时间来决定淘汰哪些数据。std::map是一种数据结构,可以在缓存中用于存储和管理键值对,从而实现更高效的数据访问和检索。缓存元数据为缓存中描述缓存数据的含义、结构、属性以及其它特征信息。在本申请实施例中缓存元数据包括缓存数据的到期时间,即expire_time和缓存标识cache_id。其中,缓存标识指的是缓存系统中的一种标识符,用于唯一标识缓存中的缓存项。
通过std::map存储各个已缓存数据对应的缓存元数据,得到存储集合,在进行TTL过期淘汰时,将到期时间expire_time作为key,淘汰时只查找时间范围内的对象,避免类似redis中后台周期性随机扫描。另外,采用缓存标识cache_id代替cache_key,避免重复存储key使得内存开销较大。
其中,在存储集合中,到期时间越后,说明对应的已缓存数据越晚过期,排序越靠后。在对各个已缓存数据进行到过期数据排查时,对存储集合从前往后进行到期时间检查,如果存储集合中的第一个缓存元数据中的到期时间相较于当前时间,为未过期状态,即,晚于当前时间,那么第一个缓存元数据之后的缓存元数据中的到期时间均为未过期状态,无需再继续进行过期数据检查,从而提高过期数据的筛查效率,无需遍历存储集合中每个元素。进一步地,将第一个缓存元数据中的到期时间与当前时间作差,得到此第一个缓存元数据对应的已缓存数据的剩余生命时长,那么在当前时间之后剩余生命时长内,无需对此第一缓存元数据的到期时间进行检查,从而减少过期数据排查时间,降低cpu的开销。
如果第一个缓存元数据的到期时间为过期状态,说明存储集合中不仅第一个缓存元数据对应的缓存数据已过期,其后面的缓存元数据对应的缓存数据可能过期或未过期,需进一步检查,那么继续按照从前往后的顺序对存储集合中下一个缓存元数据的到期时间进行检查。在其它实施例中,通过std::map自身的lower_bound快速确定过期数据范围,进而批量对此过期数据范围中的已缓存数据进行批量淘汰删除,提高过期淘汰的效率。
在另一实施例中,得到存储集合之后,还包括:根据各已缓存数据对应的到期时间,确定至少一个合并时间区间;
将到期时间处于同一合并时间区间内的缓存元数据进行合并,得到合并元数据;
将合并元数据中各缓存元数据的缓存标识对应的缓存节点进行合并,得到合并节点。
具体的,将各个已缓存数据对应的缓存元数据存储后,确定至少一个合并时间区间,一种可行的确定方式为:根据各个已缓存数据的到期时间,确定到期时间范围区间,进而根据到期时间范围区间,从预置的合并时间区间集合中选取合并时间区间,使得各合并时间区间能囊括所有到期时间,合并时间区间的时间跨度为预设时长,在本申请实施例中,预设时长为10s。
接着将到期时间处于同一个合并时间区间的缓存元数据进行合并,得到合并元数据,即,将到期时间相差较小的缓存元数据进行合并。从而有助于较少存储集合中元素的数量,进而减少查询和删除过期数据的代价。需要说明的是,合并元数据对应的到期时间为所处合并时间区间的起始时间。
最后根据合并元数据中涉及的缓存元数据的缓存标识,将对应的缓存节点进行合并,得到合并节点,从而减少LRU链表中缓存节点的数量,进而使得后续对缓存数据进行淘汰时,降低缓存节点的排查次数,提高缓存数据淘汰的效率。
例如,存储集合包括:A元素<2022-10-19 11:41:41, cache_id1>,B元素<2022-10-19 11:41:43, cache_id2>,C元素<2022-10-19 11:41:49, cache_id3>,D元素<2022-10-19 11:41:52, cache_id1>等,到期时间范围区间为:11:41:41-11:41:52,那么选取合并时间区间为:11:41:40-11:41:50、11:41:50-11:41:60。其中,A元素、B元素和C元素处于同一个合并时间区间11:41:40-11:41:50中,那么将三者进行合并,最终得到合并元数据为:<2022-10-19 11:41:40, [cache_id1, cache_id2, cache_id3],对应的是合并节点,即A元素、B元素和C元素分别对应的缓存节点合并后的缓存节点。
本申请实施例基于数据缓存的查询加速方法的实施原理为:当有数据需要进行本地缓存并且内存已满时,将待缓存数据在磁盘中进行缓存,需要进行数据块的分配,那么先从目标缓存目录对应的空闲区链表中选取可以分配可用数据块的可用FreeSpace,进而快速从中确定可用数据块并分配给此待缓存数据;如果存在已分配的数据块需要回收,那么溯源待回收数据块所属的目标FreeSpace,即,确定之前分配此待回收数据块的可用FreeSpace。如果目标FreeSpace属于非空闲区链表,说明其在回收此待回收数据块之前不存在可用数据块,那么回收后此目标FreeSpace变为可分配可用数据块的可用FreeSpace,将其从非空闲区链表移动到空闲区链表,实时更新非空闲区链表和空闲区链表。从而通过空闲区链表和非空闲区链表的方式,提升数据块的分配和回收的效率。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参见图3,为本申请实施例提供的基于数据缓存的查询加速装置的结构示意图。该应用于基于数据缓存的查询加速装置可以通过软件、硬件或者两者的结合实现成为装置的全部或一部分。该装置1包括数据获取模块11、数据写入模块12、回收定位模块13和回收挂载模块14。
数据获取模块11,用于获取待缓存数据,并在内存缓存达到上限情况下,确定待缓存数据在磁盘中对应的目标缓存目录;
数据写入模块12,用于从目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将待缓存数据写入至可用FreeSpace中的可用数据块,得到已缓存数据块,空闲区链表中包括至少一个可用FreeSpace,可用FreeSpace包括至少一个可用数据块;
回收定位模块13,用于若各已缓存数据块中存在待回收数据块,则确定待回收数据块对应的目标FreeSpace;
回收挂载模块14,用于在目标FreeSpace处于目标缓存目录对应的非空闲区链表时,将目标FreeSpace从非空闲区链表移动至空闲区链表中,非空闲区链表包括至少一个非可用FreeSpace。
可选的,回收定位模块13,具体用于:
若各已缓存数据块中存在待回收数据块,则确定FreeSpace数组的起始地址,FreeSpace数组包括空闲区链表与非空闲区链表中所有FreeSpace;
根据待回收数据块的标识符和起始地址,确定目标地址;
根据目标地址,从FreeSpace数组中确定目标FreeSpace。
可选的,如图4所示,装置1还包括读取校验模块15,具体用于:
将已缓存数据块拆分为若干个slice段;
从各slice段中确定已读取slice段,并计算已读取slice段的checksum值;
将已读取slice段对应的实际读取数据读取至内存,并根据checksum值对实际读取数据进行数据校验。
可选的,装置1还包括节点插入模块16,具体用于:
确定磁盘对应的LRU链表,LRU链表中存储有至少一个缓存节点;
通过预设的哨兵节点,按照API优先级将LRU链表划分成若干个链表段,API优先级为API接口传入参数的优先级,API优先级越低,对应的链表段在LRU链表中越靠前,各链表段中的缓存节点已按照LRU进行排序;
若存在待插入LRU链表中的目标节点,则通过各哨兵节点中目标节点对应的目标哨兵节点,将目标节点插入至目标哨兵节点对应的链表段中。
可选的,装置1还包括数据淘汰模块17,具体用于:
LRU在需要淘汰缓存数据的情况下,按照从前往后的顺序,对LRU链表中缓存节点对应的缓存数据进行淘汰。
可选的,装置1还包括过期淘汰模块18,具体用于:
通过std::map存储已缓存数据对应的缓存元数据,得到存储集合,缓存元数据包括到期时间,所述存储集合中,到期时间越靠后,对应的缓存元数据排序越靠后;
在检查各已缓存数据中的过期数据时,若存储集合中的第一个缓存元数据的到期时间为未过期状态,则停止检查;
根据第一个缓存元数据的到期时间和当前时间,确定剩余生命时长,并在当前时间之后的剩余生命时长内,暂停对第一个缓存元数据的到期时间检查;
若第一个缓存元数据的到期时间为过期状态,则继续按照从前往后的顺序对存储集合中下一个缓存元数据进行到期时间检查。
可选的,装置1还包括节点合并模块19,具体用于:
根据各已缓存数据对应的到期时间,确定至少一个合并时间区间,合并时间区间的时间跨度为预设时长;
将到期时间处于同一合并时间区间内的缓存元数据进行合并,得到合并元数据;
将合并元数据中各缓存元数据的缓存标识对应的缓存节点进行合并,得到合并节点。
需要说明的是,上述实施例提供的一种基于数据缓存的查询加速装置在执行基于数据缓存的查询加速方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的一种基于数据缓存的查询加速装置与一种基于数据缓存的查询加速方法实施例属于同一构思,其体现实现过程详见方法实施例,这里不再赘述。
本申请实施例还公开一种计算机可读存储介质,并且,计算机可读存储介质存储有计算机程序,其中,计算机程序被处理器执行时,采用了上述实施例的一种基于数据缓存的查询加速方法。
其中,计算机程序可以存储于计算机可读介质中,计算机程序包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间件形式等,计算机可读介质包括能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM)、随机存取存储器(RAM)、电载波信号、电信信号以及软件分发介质等,需要说明的是,计算机可读介质包括但不限于上述元器件。
其中,通过本计算机可读存储介质,将上述实施例的一种基于数据缓存的查询加速方法存储于计算机可读存储介质中,并且,被加载并执行于处理器上,以方便上述方法的存储及应用。
本申请实施例还公开一种电子设备,计算机可读存储介质中存储有计算机程序,计算机程序被处理器加载并执行时,采用了上述一种基于数据缓存的查询加速方法。
其中,电子设备可以采用台式电脑、笔记本电脑或者云端服务器等电子设备,并且,电子设备包括但不限于处理器以及存储器,例如,电子设备还可以包括输入输出设备、网络接入设备以及总线等。
其中,处理器可以采用中央处理单元(CPU),当然,根据实际的使用情况,也可以采用其他通用处理器、数字信号处理器(DSP)、专用集成电路(ASIC)、现成可编程门阵列(FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,通用处理器可以采用微处理器或者任何常规的处理器等,本申请对此不做限制。
其中,存储器可以为电子设备的内部存储单元,例如,电子设备的硬盘或者内存,也可以为电子设备的外部存储设备,例如,电子设备上配备的插接式硬盘、智能存储卡(SMC)、安全数字卡(SD)或者闪存卡(FC)等,并且,存储器还可以为电子设备的内部存储单元与外部存储设备的组合,存储器用于存储计算机程序以及电子设备所需的其他程序和数据,存储器还可以用于暂时地存储已经输出或者将要输出的数据,本申请对此不做限制。
其中,通过本电子设备,将上述实施例的一种基于数据缓存的查询加速方法存储于电子设备的存储器中,并且,被加载并执行于电子设备的处理器上,方便使用。
以上所述者,仅为本公开的示例性实施例,不能以此限定本公开的范围。即但凡依本公开教导所作的等效变化与修饰,皆仍属本公开涵盖的范围内。本领域技术人员在考虑说明书及实践这里的公开后,将容易想到本公开的其它实施方案。本申请旨在涵盖本公开的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本公开的一般性原理并包括本公开未记载的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本公开的范围和精神由权利要求限定。
Claims (7)
1.一种基于数据缓存的查询加速方法,其特征在于,所述方法包括:
获取待缓存数据,并在内存缓存达到上限情况下,确定所述待缓存数据在磁盘中对应的目标缓存目录;
从所述目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块,所述空闲区链表中包括至少一个可用FreeSpace,所述可用FreeSpace包括至少一个可用数据块;
若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace;
所述若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace,具体包括:
若各所述已缓存数据块中存在待回收数据块,则确定FreeSpace数组的起始地址;根据所述待回收数据块的标识符和所述起始地址,确定目标地址;根据所述目标地址,从所述FreeSpace数组中确定目标FreeSpace,其中,通过预设的公式:p + (n / 1024) * sizeof(FreeSpace),将起始地址p和标识符n分别代入其中,得到目标地址;
在所述目标FreeSpace处于所述目标缓存目录对应的非空闲区链表时,将所述目标FreeSpace从所述非空闲区链表移动至所述空闲区链表中,所述非空闲区链表包括至少一个非可用FreeSpace,其中,所述FreeSpace数组包括所述空闲区链表与所述非空闲区链表中所有FreeSpace;通过std::map存储已缓存数据对应的缓存元数据,得到存储集合,所述缓存元数据包括到期时间,所述存储集合中,到期时间越靠后,对应的缓存元数据排序越靠后;
在检查各所述已缓存数据中的过期数据时,若所述存储集合中的第一个缓存元数据的到期时间为未过期状态,则停止检查;
根据所述第一个缓存元数据的到期时间和当前时间,确定剩余生命时长,并在所述当前时间之后的所述剩余生命时长内,暂停对所述第一个缓存元数据的到期时间检查;
若所述第一个缓存元数据的到期时间为过期状态,则继续按照从前往后的顺序对所述存储集合中下一个缓存元数据进行到期时间检查;
根据各所述已缓存数据对应的到期时间,确定至少一个合并时间区间,所述合并时间区间的时间跨度为预设时长;
将到期时间处于同一所述合并时间区间内的缓存元数据进行合并,得到合并元数据;
将所述合并元数据中各缓存元数据的缓存标识对应的缓存节点进行合并,得到合并节点。
2.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块之后,还包括:
将已缓存数据块拆分为若干个slice段;
从各所述slice段中确定已读取slice段,并计算所述已读取slice段的checksum值;
将所述已读取slice段对应的实际读取数据读取至内存,并根据所述checksum值对所述实际读取数据进行数据校验。
3.根据权利要求1所述的基于数据缓存的查询加速方法,其特征在于,所述方法还包括:
确定所述磁盘对应的LRU链表,所述LRU链表中存储有至少一个缓存节点;
通过预设的哨兵节点,按照API优先级将所述LRU链表划分成若干个链表段,所述API优先级为API接口传入参数的优先级,所述API优先级越低,对应的链表段在所述LRU链表中越靠前,各所述链表段中的缓存节点已按照LRU进行排序;
若存在待插入所述LRU链表中的目标节点,则通过各所述哨兵节点中所述目标节点对应的目标哨兵节点,将所述目标节点插入至所述目标哨兵节点对应的链表段中。
4.根据权利要求3所述的基于数据缓存的查询加速方法,其特征在于,所述按照API优先级将所述LRU链表拆分成若干个链表段之后,还包括:
LRU在需要淘汰缓存数据的情况下,按照从前往后的顺序,对所述LRU链表中缓存节点对应的缓存数据进行淘汰。
5.一种基于数据缓存的查询加速装置,其特征在于,包括:
数据获取模块(11),用于获取待缓存数据,并在内存缓存达到上限情况下,确定所述待缓存数据在磁盘中对应的目标缓存目录;
数据写入模块(12),用于从所述目标缓存目录对应的空闲区链表中选取可用FreeSpace,并将所述待缓存数据写入至所述可用FreeSpace中的可用数据块,得到已缓存数据块,所述空闲区链表中包括至少一个可用FreeSpace,所述可用FreeSpace包括至少一个可用数据块;
回收定位模块(13),用于若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace;所述若各所述已缓存数据块中存在待回收数据块,则确定所述待回收数据块对应的目标FreeSpace,具体包括:
若各所述已缓存数据块中存在待回收数据块,则确定FreeSpace数组的起始地址;根据所述待回收数据块的标识符和所述起始地址,确定目标地址;根据所述目标地址,从所述FreeSpace数组中确定目标FreeSpace,其中,通过预设的公式:p + (n / 1024) * sizeof(FreeSpace),将起始地址p和标识符n分别代入其中,得到目标地址;
回收挂载模块(14),用于在所述目标FreeSpace处于所述目标缓存目录对应的非空闲区链表时,将所述目标FreeSpace从所述非空闲区链表移动至所述空闲区链表中,所述非空闲区链表包括至少一个非可用FreeSpace;
过期淘汰模块(18),用于通过std::map存储已缓存数据对应的缓存元数据,得到存储集合,所述缓存元数据包括到期时间,所述存储集合中,到期时间越靠后,对应的缓存元数据排序越靠后;
在检查各所述已缓存数据中的过期数据时,若所述存储集合中的第一个缓存元数据的到期时间为未过期状态,则停止检查;
根据所述第一个缓存元数据的到期时间和当前时间,确定剩余生命时长,并在所述当前时间之后的所述剩余生命时长内,暂停对所述第一个缓存元数据的到期时间检查;
若所述第一个缓存元数据的到期时间为过期状态,则继续按照从前往后的顺序对所述存储集合中下一个缓存元数据进行到期时间检查;
节点合并模块(19),用于根据各所述已缓存数据对应的到期时间,确定至少一个合并时间区间,所述合并时间区间的时间跨度为预设时长;
将到期时间处于同一所述合并时间区间内的缓存元数据进行合并,得到合并元数据;
将所述合并元数据中各缓存元数据的缓存标识对应的缓存节点进行合并,得到合并节点。
6.一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机程序,其特征在于,所述计算机程序被处理器加载并执行时,采用了权利要求1-4中任一项所述的方法。
7.一种电子设备,包括存储器、处理器及存储在存储器中并能够在处理器上运行的计算机程序,其特征在于,所述处理器加载并执行计算机程序时,采用了权利要求1-4中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410035076.1A CN117539409B (zh) | 2024-01-10 | 2024-01-10 | 基于数据缓存的查询加速方法、装置、介质及电子设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202410035076.1A CN117539409B (zh) | 2024-01-10 | 2024-01-10 | 基于数据缓存的查询加速方法、装置、介质及电子设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117539409A CN117539409A (zh) | 2024-02-09 |
CN117539409B true CN117539409B (zh) | 2024-03-26 |
Family
ID=89782696
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202410035076.1A Active CN117539409B (zh) | 2024-01-10 | 2024-01-10 | 基于数据缓存的查询加速方法、装置、介质及电子设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117539409B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5457793A (en) * | 1992-03-30 | 1995-10-10 | International Business Machines Corporation | Software cache management of a shared electronic store in a supplex |
CN106776375A (zh) * | 2016-12-27 | 2017-05-31 | 东方网力科技股份有限公司 | 一种磁盘内部的数据缓存方法及装置 |
CN107305475A (zh) * | 2016-04-22 | 2017-10-31 | 中国科学院微电子研究所 | 一种flashcache混合存储系统的缓存调度方法及系统 |
CN110196818A (zh) * | 2018-02-27 | 2019-09-03 | 华为技术有限公司 | 缓存数据的方法、缓存设备和存储系统 |
CN116069681A (zh) * | 2022-12-29 | 2023-05-05 | 武汉噢易云计算股份有限公司 | 一种磁盘空间回收方法、装置、电子设备以及存储介质 |
-
2024
- 2024-01-10 CN CN202410035076.1A patent/CN117539409B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US5457793A (en) * | 1992-03-30 | 1995-10-10 | International Business Machines Corporation | Software cache management of a shared electronic store in a supplex |
CN107305475A (zh) * | 2016-04-22 | 2017-10-31 | 中国科学院微电子研究所 | 一种flashcache混合存储系统的缓存调度方法及系统 |
CN106776375A (zh) * | 2016-12-27 | 2017-05-31 | 东方网力科技股份有限公司 | 一种磁盘内部的数据缓存方法及装置 |
CN110196818A (zh) * | 2018-02-27 | 2019-09-03 | 华为技术有限公司 | 缓存数据的方法、缓存设备和存储系统 |
CN116069681A (zh) * | 2022-12-29 | 2023-05-05 | 武汉噢易云计算股份有限公司 | 一种磁盘空间回收方法、装置、电子设备以及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117539409A (zh) | 2024-02-09 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN109254733B (zh) | 用于存储数据的方法、装置和系统 | |
US11474972B2 (en) | Metadata query method and apparatus | |
CN108733306B (zh) | 一种文件合并方法及装置 | |
CN108121813B (zh) | 数据管理方法、装置、系统、存储介质及电子设备 | |
CN110109868B (zh) | 用于索引文件的方法、装置和计算机程序产品 | |
CN108614837B (zh) | 文件存储和检索的方法及装置 | |
CN113568582B (zh) | 数据管理方法、装置和存储设备 | |
CN111552442A (zh) | 一种基于ssd的缓存管理系统及方法 | |
CN110955488A (zh) | 一种持久性内存的虚拟化方法及系统 | |
CN110019063B (zh) | 计算节点数据容灾回放的方法、终端设备及存储介质 | |
CN115840731A (zh) | 文件处理方法、计算设备及计算机存储介质 | |
CN111831691B (zh) | 一种数据读写方法及装置、电子设备、存储介质 | |
CN112148736A (zh) | 缓存数据的方法、设备及存储介质 | |
CN115878027A (zh) | 一种存储对象的处理方法、装置、终端及存储介质 | |
CN110737389B (zh) | 存储数据的方法和装置 | |
CN110716924B (zh) | 删除过期数据的方法和装置 | |
CN112596949B (zh) | 一种高效率的ssd删除数据恢复方法及系统 | |
US20170329705A1 (en) | Determining a Data Layout in a Log Structured Storage System | |
CN117539409B (zh) | 基于数据缓存的查询加速方法、装置、介质及电子设备 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
CN112995257A (zh) | 基于云存储架构的缓存扩容方法、装置以及存储介质 | |
US8028011B1 (en) | Global UNIX file system cylinder group cache | |
CN115390754A (zh) | 一种硬盘管理方法及装置 | |
CN111399753B (zh) | 写入图片的方法和装置 | |
CN114647658A (zh) | 一种数据检索方法、装置、设备及机器可读存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |