CN115952110B - 一种数据缓存方法、装置、设备和计算机可读存储介质 - Google Patents
一种数据缓存方法、装置、设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN115952110B CN115952110B CN202310219993.0A CN202310219993A CN115952110B CN 115952110 B CN115952110 B CN 115952110B CN 202310219993 A CN202310219993 A CN 202310219993A CN 115952110 B CN115952110 B CN 115952110B
- Authority
- CN
- China
- Prior art keywords
- management structure
- data management
- memory data
- time
- target
- 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
Images
Classifications
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Memory System Of A Hierarchy Structure (AREA)
Abstract
本申请涉及数据存储技术领域,公开了一种数据缓存方法、装置、设备和计算机可读存储介质,在接收到写请求时,从多个缓存区域中选取与写请求携带的目标逻辑地址匹配的目标缓存区域。在目标缓存区域无对应的内存数据管理结构时,对目标缓存区域建立内存数据管理结构并标记申请时间,并将内存数据管理结构挂载到时间队列;将写请求携带的数据写入到内存数据管理结构。在目标缓存区域有对应的内存数据管理结构时,基于内存数据管理结构的申请时间与当前时间的偏差,将写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。依据逻辑地址、内存数据管理结构的申请时间缓存数据,实现了对数据空间局部性和时间局部性的兼顾。
Description
技术领域
本申请涉及数据存储技术领域,特别是涉及一种数据缓存方法、装置、设备和计算机可读存储介质。
背景技术
存储阵列一般利用高性能介质作为缓存(cache)来提高性能,当用户应用将数据写到存储阵列时,数据写入cache后就返回用户成功,然后存储阵列在适当的时机,将cache中的数据写到硬盘中保存。
当用户从存储阵列读取数据时,阵列会首先到cache中查找是否有需要的数据,若有就可以直接获取和返回,若没有则需要到硬盘中去读取。因为首先到cache中查找数据,所以往往cache在将数据保存到硬盘中之后,也不会立刻把cache中的数据丢弃,而是会放置一段时间,直到达到一定条件,cache才会将这些已经在硬盘中保存的数据从cache中丢弃掉。而且cache也有自己的预取策略,将用户可能读取的数据提前从硬盘中读出来放在cache中。因为cache收到的用户写数据最终要写到硬盘中,缓存预取数据也是从硬盘中读取,所以缓存中数据组织管理方式结合数据在硬盘中的存储方式,才能更好的发挥缓存的作用。
数据在硬盘中的存储方式包括两种,一种方式是覆盖写,即同一个逻辑单元号(Logical Unit Number,LUN)同一个逻辑块地址(Logical Block Address,LBA)位置的数据在硬盘上存储的位置一旦被分配,就不会变化,每次写时都是在同一个位置。另一种方式是追加写,即同一个LUN同一个LBA位置的数据在硬盘上保存的位置不是固定的,每次写时,存储阵列都以日志追加的方式,新分配存储位置,而不是在之前保存的位置上覆盖写,而这种方式需要垃圾回收(Garbage Collection,GC)不断的回收老数据占用的空间,来不断的提供新空间。
缓存对数据的组织管理一般也包括两种方式,第一种缓存方式是将数据按逻辑空间位置(LBA)组织管理,收到相同LBA的写请求时,则新数据覆盖老数据即覆盖写。缓存数据落盘时按逻辑空间位置将数据落盘。第二种缓存方式是按时间顺序组织管理,即老数据不会被新数据覆盖,所有数据都以日志的方式按收到的时间先后进行组织。数据落盘时按照时间顺序将数据落盘。在以追加写方式向存储设备存储数据时,这两种缓存数据的组织管理方式都可以应用,但都存在一定的问题。
对于第一种缓存方式,便于在cache中按LBA检索数据,也维持了数据在硬盘中的空间局部性,即相邻LBA的数据在硬盘上保存位置相邻,通常相邻LBA位置的数据被再次同时被访问的概率相比其它数据更大。有利于按照空间局部性预取相邻LBA数据时将多个预取请求合并,减少读盘次数。但是硬盘上保存的数据没有了时间局部性,即用户应用在相邻时间写入的数据,因为LBA不相邻而被打散保存在硬盘上的不同位置。
对于第二种缓存方式,维持了数据的时间局部性,即相邻时间写入的数据在硬盘上保存位置相邻,通常相邻时间的数据被再次同时被访问的概率相比其它数据更大,被同时覆盖写而都变为垃圾数据的概率也更大。能够依据时间局部性进行预取数据而提高读性能,有利于存储阵列的垃圾回收和缩小写放大,写放大越大即垃圾回收时需要搬迁的数据越多,对阵列性能和硬盘压力都不好。但是它的问题首先是不便于在cache中检索数据,另外是盘上数据没有了空间局部性,以及因为是追加写方式保存,所以即使是相同空间位置的不同时刻数据,在缓存中也是都要保存的,就造成了缓存空间的浪费,以及最终落盘保存时无效的老数据也会落盘,增加硬盘压力。
可见,如何兼顾数据的空间局部性和时间局部性,以提高缓存空间的存储性能,是本领域技术人员需要解决的问题。
发明内容
本申请实施例的目的是提供一种数据缓存方法、装置、设备和计算机可读存储介质,可以兼顾数据的空间局部性和时间局部性,以提高缓存空间的性能。
为解决上述技术问题,本申请实施例提供一种数据缓存方法,包括:
在接收到写请求的情况下,从多个缓存区域中选取与所述写请求携带的目标逻辑地址匹配的目标缓存区域;
在所述目标缓存区域无对应的内存数据管理结构的情况下,对所述目标缓存区域建立内存数据管理结构并标记申请时间,并将所述内存数据管理结构挂载到时间队列;将所述写请求携带的数据写入到所述内存数据管理结构;
在所述目标缓存区域有对应的内存数据管理结构的情况下,基于所述内存数据管理结构的申请时间与当前时间的偏差,将所述写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。
可选地,所述在所述目标缓存区域无对应的内存数据管理结构的情况下,对所述目标缓存区域建立内存数据管理结构并标记申请时间包括:
在所述目标缓存区域无对应的内存数据管理结构的情况下,依据所述目标缓存区域所对应的逻辑地址范围以及当前时间,构建所述目标缓存区域对应的内存数据管理结构;
将所述当前时间标记为所述内存数据管理结构的申请时间。
可选地,所述将所述内存数据管理结构挂载到时间队列包括:
根据所述内存数据管理结构的申请时间,将所述内存数据管理结构的标识信息按照时间顺序挂载到所述时间队列。
可选地,所述在所述目标缓存区域有对应的内存数据管理结构的情况下,基于所述内存数据管理结构的申请时间与当前时间的偏差,将所述写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中包括:
在所述目标缓存区域有对应的内存数据管理结构的情况下,判断所述内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内;
在所述内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据存储到所述内存数据管理结构中所述目标逻辑地址指向的位置;
在所述内存数据管理结构的申请时间与当前时间的时间间隔不在设定的阈值范围内的情况下,建立新的内存数据管理结构并标记申请时间,并将所述新的内存数据管理结构挂载到时间队列;将所述写请求携带的数据记录到所述新的内存数据管理结构中。
可选地,在所述目标缓存区域对应的内存数据管理结构有多个的情况下,所述判断所述内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内包括:
判断最新建立的内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内。
可选地,所述在所述内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据存储到所述内存数据管理结构中所述目标逻辑地址指向的位置包括:
在所述最新建立的内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据写入到所述最新建立的内存数据管理结构中所述目标逻辑地址指向的位置。
可选地,所述将所述写请求携带的数据存储到所述内存数据管理结构中所述目标逻辑地址指向的位置包括:
判断所述内存数据管理结构中目标位置是否存在数据;其中,所述目标位置为所述目标逻辑地址所指向的位置;
在所述内存数据管理结构中目标位置存在数据的情况下,将所述写请求携带的数据覆盖写入到所述目标位置;
在所述内存数据管理结构中目标位置不存在数据的情况下,将所述写请求携带的数据写入到所述目标位置。
可选地,所述建立新的内存数据管理结构并标记申请时间包括:
依据所述目标缓存区域所对应的逻辑地址范围以及当前时间,构建新的内存数据管理结构;
将所述当前时间标记为所述新的内存数据管理结构的申请时间。
可选地,所述将所述新的内存数据管理结构挂载到时间队列包括:
根据所述新的内存数据管理结构的申请时间,将所述新的内存数据管理结构的标识信息按照时间顺序挂载到所述时间队列。
可选地,所述将所述写请求携带的数据写入到所述内存数据管理结构之后还包括:
对写入所述内存数据管理结构的数据设置写标识。
可选地,还包括:
在多个所述缓存区域的总已用空间量达到设定的水位阈值的情况下,将各所述内存数据管理结构中存储的设置有写标识的数据以追加写方式存入硬盘。
可选地,还包括:
在多个所述缓存区域的总已用空间量达到设定的水位阈值的情况下,选取出申请时间与当前时间的时间间隔超过设定的时间阈值的待处理内存数据管理结构;
依据所述待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘。
可选地,在所述依据所述待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘之后还包括:
将各所述待处理内存数据管理结构中存储的数据的写标识调整为读标识。
可选地,还包括:
按照设定的周期时间,将设置有读标识的数据及其所属的内存数据管理结构删除。
可选地,还包括:
在接收到数据读取请求的情况下,依据所述数据读取请求携带的逻辑地址查询匹配的第一内存数据管理结构;
在所述第一内存数据管理结构中存在与所述数据读取请求携带的逻辑地址对应的目标数据的情况下,从所述第一内存数据管理结构中读取所述目标数据。
可选地,还包括:
在所述匹配的第一内存数据管理结构中不存在与所述数据读取请求携带的逻辑地址对应的目标数据的情况下,从硬盘中读取与所述数据读取请求携带的逻辑地址匹配的目标数据。
可选地,还包括:
从所述硬盘中预读取与所述目标数据相邻的数据,并将所述相邻的数据放入对应的内存数据管理结构。
本申请实施例还提供了一种数据缓存装置,包括选取单元、建立单元、挂载单元、第一写入单元和第二写入单元;
所述选取单元,用于在接收到写请求的情况下,从多个缓存区域中选取与所述写请求携带的目标逻辑地址匹配的目标缓存区域;
所述建立单元,用于在所述目标缓存区域无对应的内存数据管理结构的情况下,对所述目标缓存区域建立内存数据管理结构并标记申请时间;
所述挂载单元,用于将所述内存数据管理结构挂载到时间队列;
所述第一写入单元,用于将所述写请求携带的数据写入到所述内存数据管理结构;
所述第二写入单元,用于在所述目标缓存区域有对应的内存数据管理结构的情况下,基于所述内存数据管理结构的申请时间与当前时间的偏差,将所述写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。
可选地,所述建立单元包括构建子单元和标记子单元;
所述构建子单元,用于在所述目标缓存区域无对应的内存数据管理结构的情况下,依据所述目标缓存区域所对应的逻辑地址范围以及当前时间,构建所述目标缓存区域对应的内存数据管理结构;
所述标记子单元,用于将所述当前时间标记为所述内存数据管理结构的申请时间。
可选地,所述挂载单元用于根据所述内存数据管理结构的申请时间,将所述内存数据管理结构的标识信息按照时间顺序挂载到所述时间队列。
可选地,所述第二写入单元包括判断子单元、存储子单元、建立子单元、挂载子单元和记录子单元;
所述判断子单元,用于在所述目标缓存区域有对应的内存数据管理结构的情况下,判断所述内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内;
所述存储子单元,用于在所述内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据存储到所述内存数据管理结构中所述目标逻辑地址指向的位置;
所述建立子单元,用于在所述内存数据管理结构的申请时间与当前时间的时间间隔不在设定的阈值范围内的情况下,建立新的内存数据管理结构并标记申请时间;
所述挂载子单元,用于将所述新的内存数据管理结构挂载到时间队列;
所述记录子单元,用于将所述写请求携带的数据记录到所述新的内存数据管理结构中。
可选地,在所述目标缓存区域对应的内存数据管理结构有多个的情况下,所述判断子单元用于判断最新建立的内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内。
可选地,所述存储子单元用于在所述最新建立的内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据写入到所述最新建立的内存数据管理结构中所述目标逻辑地址指向的位置。
可选地,所述存储子单元用于判断所述内存数据管理结构中目标位置是否存在数据;其中,所述目标位置为所述目标逻辑地址所指向的位置;
在所述内存数据管理结构中目标位置存在数据的情况下,将所述写请求携带的数据覆盖写入到所述目标位置;
在所述内存数据管理结构中目标位置不存在数据的情况下,将所述写请求携带的数据写入到所述目标位置。
可选地,所述建立子单元用于依据所述目标缓存区域所对应的逻辑地址范围以及当前时间,构建新的内存数据管理结构;
将所述当前时间标记为所述新的内存数据管理结构的申请时间。
可选地,所述挂载子单元用于根据所述新的内存数据管理结构的申请时间,将所述新的内存数据管理结构的标识信息按照时间顺序挂载到所述时间队列。
可选地,还包括设置单元;
所述设置单元,用于对写入所述内存数据管理结构的数据设置写标识。
可选地,还包括存入单元;
所述存入单元,用于在多个所述缓存区域的总已用空间量达到设定的水位阈值的情况下,将各所述内存数据管理结构中存储的设置有写标识的数据以追加写方式存入硬盘。
可选地,还包括时间选取单元和追加写单元;
所述时间选取单元,用于在多个所述缓存区域的总已用空间量达到设定的水位阈值的情况下,选取出申请时间与当前时间的时间间隔超过设定的时间阈值的待处理内存数据管理结构;
所述追加写单元,用于依据所述待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘。
可选地,还包括调整单元;
所述调整单元,用于将各所述待处理内存数据管理结构中存储的数据的写标识调整为读标识。
可选地,还包括删除单元;
所述删除单元,用于按照设定的周期时间,将设置有读标识的数据及其所属的内存数据管理结构删除。
可选地,还包括查询单元和第一读取单元;
所述查询单元,用于在接收到数据读取请求的情况下,依据所述数据读取请求携带的逻辑地址查询匹配的第一内存数据管理结构;
所述第一读取单元,用于在所述第一内存数据管理结构中存在与所述数据读取请求携带的逻辑地址对应的目标数据的情况下,从所述第一内存数据管理结构中读取所述目标数据。
可选地,还包括第二读取单元;
所述第二读取单元,用于在所述匹配的第一内存数据管理结构中不存在与所述数据读取请求携带的逻辑地址对应的目标数据的情况下,从硬盘中读取与所述数据读取请求携带的逻辑地址匹配的目标数据。
可选地,还包括预读单元和放入单元;
所述预读单元,用于从所述硬盘中预读取与所述目标数据相邻的数据;
所述放入单元,用于将所述相邻的数据放入对应的内存数据管理结构。
本申请实施例还提供了一种电子设备,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如上述数据缓存方法的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如上述数据缓存方法的步骤。
由上述技术方案可以看出,在接收到写请求的情况下,从多个缓存区域中选取与写请求携带的目标逻辑地址匹配的目标缓存区域。每个缓存区域有其对应的一个逻辑地址范围,从而可以保证部分逻辑地址连续的数据可以记录在相同的缓存区域中,从而保留了数据之间的空间局部性。内存数据管理结构可以看作是封装缓存区域的虚拟盒子,每个内存数据管理结构有其对应的申请时间。在目标缓存区域无对应的内存数据管理结构的情况下,说明目标缓存区域未存储数据,此时可以对目标缓存区域建立内存数据管理结构并标记申请时间,并将内存数据管理结构挂载到时间队列;将写请求携带的数据写入到内存数据管理结构。在目标缓存区域有对应的内存数据管理结构的情况下,同一个缓存区域对应的内存数据管理结构可能有多个,此时可以基于内存数据管理结构的申请时间与当前时间的偏差,将写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。在该技术方案中,通过依据逻辑地址存储数据,可以充分保留数据之间的空间局部性。通过依据内存数据管理结构的申请时间和当前时间的偏差,可以将数据写入到满足时间偏差要求的目标内存数据管理结构,充分保留数据之间的时间局部性,实现了对数据的空间局部性和时间局部性的兼顾,极大的提高了缓存空间的存储性能。
附图说明
为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种数据缓存方法的流程图;
图2为本申请实施例提供的一种将数据写入到目标内存数据管理结构的方法的流程图;
图3为本申请实施例提供的一种按照空间组织和时间组织构建内存数据管理结构的示意图;
图4为本申请实施例提供的一种数据读取的方法的流程图;
图5为本申请实施例提供的一种数据缓存装置的结构示意图;
图6为本申请实施例提供的一种电子设备的结构图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下,所获得的所有其他实施例,都属于本申请保护范围。
本申请的说明书和权利要求书及上述附图中的术语“包括”和“具有”,以及与“包括”和“具有”相关的任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可包括没有列出的步骤或单元。
为了使本技术领域的人员更好地理解本申请方案,下面结合附图和具体实施方式对本申请作进一步的详细说明。
接下来,详细介绍本申请实施例所提供的一种数据缓存方法。图1为本申请实施例提供的一种数据缓存方法的流程图,该方法包括:
S101:在接收到写请求的情况下,从多个缓存区域中选取与写请求携带的目标逻辑地址匹配的目标缓存区域。
在本申请实施例中,可以按照设定的粒度,对缓存空间进行划分,从而得到多个缓存区域。缓存空间可以包括存储阵列为应用服务器提供的多个数据存储对象。划分得到的每个缓存区域有其对应的逻辑地址范围。
粒度的大小可以基于实际需求设置,在此不做限定,例如可以设置为8MB。
写请求中携带有所需缓存的数据以及对应存储的逻辑地址和数据大小。为了便于和缓存区域对应的逻辑地址范围进行区分,可以将写请求携带的逻辑地址称作目标逻辑地址。
在获取到写请求的情况下,可以基于多个缓存区域各自对应的逻辑地址范围,确定出与写请求携带的目标逻辑地址匹配的缓存区域。为了便于区分,可以将与写请求携带的目标逻辑地址匹配的缓存区域称作目标缓存区域。
S102:在目标缓存区域无对应的内存数据管理结构的情况下,对目标缓存区域建立内存数据管理结构并标记申请时间,并将内存数据管理结构挂载到时间队列;将写请求携带的数据写入到内存数据管理结构。
内存数据管理结构可以看作是用于封装缓存区域的虚拟盒子,为了体现出数据之间的时间特性,同一个缓存区域对应的内存数据管理结构可以有多个,同一个缓存区域对应的多个内存数据管理结构可以基于申请时间进行区分。
在本申请实施例中,可以在目标缓存区域无对应的内存数据管理结构的情况下,依据目标缓存区域所对应的逻辑地址范围以及当前时间,构建目标缓存区域对应的内存数据管理结构;将当前时间标记为内存数据管理结构的申请时间。
缓存空间可以包括多个数据存储对象,为了便于区分,在实际应用中,可以使用LUN加不同数字来表征不同的数据存储对象,例如,两个数据存储对象,可以分别表征为LUN0和LUN1。对于不同缓存区域(EXTENT)可以采用EXTENT加不同数字来表征,例如两个缓存区域,可以分别表征为EXTENT1,EXTENT2等。每个缓存区域对应的不同逻辑地址范围可以采用“LBA RANGE”加不同数字来表征,例如可以采用LBA RANGE1和LBA RANGE2表征两个缓存区域各自的逻辑地址范围。需要说明的是,LBA RANGE1和LBA RANGE2仅是为了表征不同的逻辑地址范围,在具体实现中,针对于每个缓存区域会记录其对应的具体逻辑地址范围。
举例说明,在LUN0下划分得到的一个缓存区域EXTENT1,对应的逻辑地址范围为LBA RANGE1,在TIME1时间下创建的内存数据管理结构,可以采用LUN0-EXTENT1(LBARANGE1)-TIME1表示。
在本申请实施例中,为了体现出各内存数据管理结构存储数据的时间先后顺序,可以根据内存数据管理结构的申请时间,将内存数据管理结构的标识信息按照时间顺序挂载到时间队列。
内存数据管理结构的标识信息可以为能够用于区分不同内存数据管理结构的唯一标识。在本申请实施例中,对于标识信息的具体形式不做限定,例如,可以由内存数据管理结构所属的数据存储对象、所对应的缓存区域以及申请时间组合作为标识信息。
S103:在目标缓存区域有对应的内存数据管理结构的情况下,基于内存数据管理结构的申请时间与当前时间的偏差,将写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。
初始状态下,当需要向目标缓存区域写入数据时,会创建其对应的一个内存数据管理结构。当间隔时间较久后,再次向该目标缓存区域写入新的数据时,如果直接将新的数据写入该内存数据管理结构,会导致同一个内存数据管理结构存储的数据时间跨度较广,并不利于后续读取出时间先后关联的数据。
因此在本申请实施例中,为了最大程度的保留数据之间的时间特性,可以在当前时间与内存数据管理结构的申请时间偏差较大的情况下,对该目标缓存区域创建新的内存数据管理结构,将数据写入新的内存数据管理结构中。
由上述技术方案可以看出,在接收到写请求的情况下,从多个缓存区域中选取与写请求携带的目标逻辑地址匹配的目标缓存区域。每个缓存区域有其对应的一个逻辑地址范围,从而可以保证部分逻辑地址连续的数据可以记录在相同的缓存区域中,从而保留了数据之间的空间局部性。内存数据管理结构可以看作是封装缓存区域的虚拟盒子,每个内存数据管理结构有其对应的申请时间。在目标缓存区域无对应的内存数据管理结构的情况下,说明目标缓存区域未存储数据,此时可以对目标缓存区域建立内存数据管理结构并标记申请时间,并将内存数据管理结构挂载到时间队列;将写请求携带的数据写入到内存数据管理结构。在目标缓存区域有对应的内存数据管理结构的情况下,同一个缓存区域对应的内存数据管理结构可能有多个,此时可以基于内存数据管理结构的申请时间与当前时间的偏差,将写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。在该技术方案中,通过依据逻辑地址存储数据,可以充分保留数据之间的空间局部性。通过依据内存数据管理结构的申请时间和当前时间的偏差,可以将数据写入到满足时间偏差要求的目标内存数据管理结构,充分保留数据之间的时间局部性,实现了对数据的空间局部性和时间局部性的兼顾,极大的提高了缓存空间的存储性能。
图2为本申请实施例提供的一种将数据写入到目标内存数据管理结构的方法的流程图,该方法包括:
S201:在目标缓存区域有对应的内存数据管理结构的情况下,判断内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内。
考虑到实际应用中,一个目标缓存区域可能对应多个内存数据管理结构,在进行数据缓存时,可以只判断最新建立的内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内。
阈值范围可以基于实际需求设置,例如,可以设置在1分钟内。
每创建一个新的内存数据管理结构,便会将创建该内存数据管理结构的时间作为该内存数据管理结构的申请时间。
在具有数据缓存需求时,可以将接收到写请求的时间作为当前时间,在内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,说明当前要写入的数据,与内存数据管理结构中已存储的数据之间的时间间隔较短,此时可以执行S202。
在内存数据管理结构的申请时间与当前时间的时间间隔不在设定的阈值范围内的情况下,说明当前要写入的数据,与内存数据管理结构中已存储的数据之间的时间间隔较长,为了保留数据之间的时间特性,此时可以执行S203。
S202:将写请求携带的数据存储到内存数据管理结构中目标逻辑地址指向的位置。
在最新建立的内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,可以将写请求携带的数据写入到最新建立的内存数据管理结构中目标逻辑地址指向的位置。
考虑到实际应用中,可能会存在数据要写入的位置已经存储了数据,因此在写入数据时,可以判断内存数据管理结构中目标位置是否存在数据;其中,目标位置为目标逻辑地址所指向的位置。
在内存数据管理结构中目标位置存在数据的情况下,此时可以将写请求携带的数据覆盖写入到目标位置。在内存数据管理结构中目标位置不存在数据的情况下,此时可以直接将写请求携带的数据写入到目标位置。
S203:建立新的内存数据管理结构并标记申请时间,并将新的内存数据管理结构挂载到时间队列;将写请求携带的数据记录到新的内存数据管理结构中。
为了便于区分不同的内存数据管理结构,在具体实现中,可以依据目标缓存区域所对应的逻辑地址范围以及当前时间,构建新的内存数据管理结构;将当前时间标记为新的内存数据管理结构的申请时间。
在构建出新的内存数据管理结构之后,可以根据新的内存数据管理结构的申请时间,将新的内存数据管理结构的标识信息按照时间顺序挂载到时间队列。
图3为本申请实施例提供的一种按照空间组织和时间组织构建内存数据管理结构的示意图,图3是以两个数据存储对象,数据存储对象0和数据存储对象1为例,数据存储对象0划分为两个缓存区域,缓存区域1和缓存区域2。数据存储对象1也以划分为两个缓存区域,缓存区域1和缓存区域2为例。
以数据存储对象0为例,缓存区域1对应有两个内存数据管理结构,这两个内存数据管理结构对应的是同一块缓存区域,因此对应相同的逻辑地址范围1,由于两个内存数据管理结构的申请时间不同,可以用时间0和时间1表征申请时间。缓存区域2对应有一个内存数据管理结构,该内存数据管理结构对应逻辑地址范围2,申请时间为时间3。
以数据存储对象1为例,缓存区域1和缓存区域2均对应有一个内存数据管理结构,缓存区域1对应逻辑地址范围3,缓存区域2对应逻辑地址范围4。以同时创建这两个缓存区域的内存数据管理结构为例,这两个缓存区域对应的申请时间均为时间2。图3右侧框图为按照各内存数据管理结构对应的申请时间进行排序的示意图。在实际应用中,可以按照申请时间的先后顺序在时间队列中记录各内存数据管理结构的标识信息。
在本申请实施例中,在目标缓存区域有对应的内存数据管理结构的情况下,判断内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内。将写请求携带的数据存储到内存数据管理结构中目标逻辑地址指向的位置。建立新的内存数据管理结构并标记申请时间,并将新的内存数据管理结构挂载到时间队列;将写请求携带的数据记录到新的内存数据管理结构中。
通过对缓存空间按照设定的粒度划分为多个缓存区域,并且针对于同一个缓存空间可以按照时间的不同设置不同的内存数据管理结构,使得内存数据管理结构既有空间属性,也有时间属性。不同时间范围内的数据分布在不同内存数据管理结构内实现分开管理,相同时间范围内的相同逻辑地址的数据在同一个内存数据管理结构内相互覆盖。所有缓存空间的内存数据管理结构按照时间顺序一起管理,缓存数据落盘时可以按时间顺序将所有数据一起落盘。
为了便于系统了解当前内存数据管理结构中存储的数据是否已经完成落盘操作,可以对数据设置标识。例如,在内存数据管理结构中存储的数据已经下发至硬盘保存,则可以对该内存数据管理结构设置读标识。在内存数据管理结构中存储的数据还未下发至硬盘保存,则可以对该内存数据管理结构设置写标识。对写入内存数据管理结构的数据设置写标识。
在本申请实施例中,可以设置水位阈值来触发数据的落盘操作。在具体实现中,可以在多个缓存区域的总已用空间量达到设定的水位阈值的情况下,将各内存数据管理结构中存储的设置有写标识的数据以追加写方式存入硬盘。
水位阈值的取值可以按照缓存区域的总空间量的占比设置,例如,缓存区域的总空间量为10G,按照90%的占比,水位阈值可以设置为9G。
除了直接将各内存数据管理结构中存储的设置有写标识的数据以追加写方式存入硬盘外,还可以进一步考虑各内存数据管理结构中数据的存储时间。在具体实现中,可以在多个缓存区域的总已用空间量达到设定的水位阈值的情况下,选取出申请时间与当前时间的时间间隔超过设定的时间阈值的待处理内存数据管理结构。依据待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘。
考虑到实际应用中,刚存入硬盘的数据短时间内被访问的概率较高,为了提升数据的读取效率,可以将存入硬盘的数据在内存数据管理结构中仍保留一段时间。为了与新写入内存数据管理结构的数据进行区分,可以在依据待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘之后,将各待处理内存数据管理结构中存储的数据的写标识调整为读标识。
为了避免写入硬盘的数据长时间占用内存数据管理结构,可以按照设定的周期时间,将设置有读标识的数据及其所属的内存数据管理结构删除。
通过将写入硬盘的数据在内存数据管理结构中缓存一段时间,既可以保证写入硬盘的数据被调用时的读取效率,也可以避免已写入硬盘的数据长时间占用内存数据管理结构的缓存空间。
图4为本申请实施例提供的一种数据读取的方法的流程图,该方法包括:
S401:在接收到数据读取请求的情况下,依据数据读取请求携带的逻辑地址查询匹配的第一内存数据管理结构。
读取请求中会携带所需读取数据的逻辑地址和数据大小。每个内存数据管理结构有其对应的逻辑地址范围,基于读取请求携带的逻辑地址,可以确定出匹配的内存数据管理结构。为了便于和其它内存数据管理结构进行区分,可以将与数据读取请求携带的逻辑地址匹配的内存数据管理结构称作第一内存数据管理结构。
S402:在第一内存数据管理结构中存在与数据读取请求携带的逻辑地址对应的目标数据的情况下,从第一内存数据管理结构中读取目标数据。
在第一内存数据管理结构中存在与数据读取请求携带的逻辑地址对应的目标数据的情况下,说明所需读取的数据仍在内存数据管理结构中保存,为了提升数据读取效率,可以直接从第一内存数据管理结构中读取目标数据。
S403:在匹配的第一内存数据管理结构中不存在与数据读取请求携带的逻辑地址对应的目标数据的情况下,从硬盘中读取与数据读取请求携带的逻辑地址匹配的目标数据。
在第一内存数据管理结构中不存在与数据读取请求携带的逻辑地址对应的目标数据的情况下,说明所需读取的数据已经不在内存数据管理结构中存在,此时需要从硬盘中读取与数据读取请求携带的逻辑地址匹配的目标数据。
考虑到实际应用中,在完成当前数据的读取后,对于与该数据逻辑地址相邻或者时间相邻的数据被读取的概率很高,因此为了进一步提升数据的读取效率,可以执行数据的预读操作。
在具体实现中,可以从硬盘中预读取与目标数据相邻的数据,并将相邻的数据放入对应的内存数据管理结构。
在本申请实施例中,由于数据落盘时是按照内存数据管理结构的申请时间顺序,将数据追加写入硬盘的,所以是按照时间顺序被相邻保存的,而且单个内存数据管理结构内的数据是空间上相邻,所以预读数据的时候,可以将硬盘上与读取数据相邻的数据预读起来,就是把空间上相邻、时间上相邻的数据都预读出来了,从而提升预读数据的命中率。
图5为本申请实施例提供的一种数据缓存装置的结构示意图,包括选取单元51、建立单元52、挂载单元53、第一写入单元54和第二写入单元55;
选取单元51,用于在接收到写请求的情况下,从多个缓存区域中选取与写请求携带的目标逻辑地址匹配的目标缓存区域;
建立单元52,用于在目标缓存区域无对应的内存数据管理结构的情况下,对目标缓存区域建立内存数据管理结构并标记申请时间;
挂载单元53,用于将内存数据管理结构挂载到时间队列;
第一写入单元54,用于将写请求携带的数据写入到内存数据管理结构;
第二写入单元55,用于在目标缓存区域有对应的内存数据管理结构的情况下,基于内存数据管理结构的申请时间与当前时间的偏差,将写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。
可选地,建立单元包括构建子单元和标记子单元;
构建子单元,用于在目标缓存区域无对应的内存数据管理结构的情况下,依据目标缓存区域所对应的逻辑地址范围以及当前时间,构建目标缓存区域对应的内存数据管理结构;
标记子单元,用于将当前时间标记为内存数据管理结构的申请时间。
可选地,挂载单元用于根据内存数据管理结构的申请时间,将内存数据管理结构的标识信息按照时间顺序挂载到时间队列。
可选地,第二写入单元包括判断子单元、存储子单元、建立子单元、挂载子单元和记录子单元;
判断子单元,用于在目标缓存区域有对应的内存数据管理结构的情况下,判断内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内;
存储子单元,用于在内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将写请求携带的数据存储到内存数据管理结构中目标逻辑地址指向的位置;
建立子单元,用于在内存数据管理结构的申请时间与当前时间的时间间隔不在设定的阈值范围内的情况下,建立新的内存数据管理结构并标记申请时间;
挂载子单元,用于将新的内存数据管理结构挂载到时间队列;
记录子单元,用于将写请求携带的数据记录到新的内存数据管理结构中。
可选地,在目标缓存区域对应的内存数据管理结构有多个的情况下,判断子单元用于判断最新建立的内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内。
可选地,存储子单元用于在最新建立的内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将写请求携带的数据写入到最新建立的内存数据管理结构中目标逻辑地址指向的位置。
可选地,存储子单元用于判断内存数据管理结构中目标位置是否存在数据;其中,目标位置为目标逻辑地址所指向的位置;
在内存数据管理结构中目标位置存在数据的情况下,将写请求携带的数据覆盖写入到目标位置;
在内存数据管理结构中目标位置不存在数据的情况下,将写请求携带的数据写入到目标位置。
可选地,建立子单元用于依据目标缓存区域所对应的逻辑地址范围以及当前时间,构建新的内存数据管理结构;
将当前时间标记为新的内存数据管理结构的申请时间。
可选地,挂载子单元用于根据新的内存数据管理结构的申请时间,将新的内存数据管理结构的标识信息按照时间顺序挂载到时间队列。
可选地,还包括设置单元;
设置单元,用于对写入内存数据管理结构的数据设置写标识。
可选地,还包括存入单元;
存入单元,用于在多个缓存区域的总已用空间量达到设定的水位阈值的情况下,将各内存数据管理结构中存储的设置有写标识的数据以追加写方式存入硬盘。
可选地,还包括时间选取单元和追加写单元;
时间选取单元,用于在多个缓存区域的总已用空间量达到设定的水位阈值的情况下,选取出申请时间与当前时间的时间间隔超过设定的时间阈值的待处理内存数据管理结构;
追加写单元,用于依据待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘。
可选地,还包括调整单元;
调整单元,用于将各待处理内存数据管理结构中存储的数据的写标识调整为读标识。
可选地,还包括删除单元;
删除单元,用于按照设定的周期时间,将设置有读标识的数据及其所属的内存数据管理结构删除。
可选地,还包括查询单元和第一读取单元;
查询单元,用于在接收到数据读取请求的情况下,依据数据读取请求携带的逻辑地址查询匹配的第一内存数据管理结构;
第一读取单元,用于在第一内存数据管理结构中存在与数据读取请求携带的逻辑地址对应的目标数据的情况下,从第一内存数据管理结构中读取目标数据。
可选地,还包括第二读取单元;
第二读取单元,用于在匹配的第一内存数据管理结构中不存在与数据读取请求携带的逻辑地址对应的目标数据的情况下,从硬盘中读取与数据读取请求携带的逻辑地址匹配的目标数据。
可选地,还包括预读单元和放入单元;
预读单元,用于从硬盘中预读取与目标数据相邻的数据;
放入单元,用于将相邻的数据放入对应的内存数据管理结构。
图5所对应实施例中特征的说明可以参见图1、图2和图4所对应实施例的相关说明,这里不再一一赘述。
由上述技术方案可以看出,在接收到写请求的情况下,从多个缓存区域中选取与写请求携带的目标逻辑地址匹配的目标缓存区域。每个缓存区域有其对应的一个逻辑地址范围,从而可以保证部分逻辑地址连续的数据可以记录在相同的缓存区域中,从而保留了数据之间的空间局部性。内存数据管理结构可以看作是封装缓存区域的虚拟盒子,每个内存数据管理结构有其对应的申请时间。在目标缓存区域无对应的内存数据管理结构的情况下,说明目标缓存区域未存储数据,此时可以对目标缓存区域建立内存数据管理结构并标记申请时间,并将内存数据管理结构挂载到时间队列;将写请求携带的数据写入到内存数据管理结构。在目标缓存区域有对应的内存数据管理结构的情况下,同一个缓存区域对应的内存数据管理结构可能有多个,此时可以基于内存数据管理结构的申请时间与当前时间的偏差,将写请求携带的数据写入到满足时间偏差要求的目标内存数据管理结构中。在该技术方案中,通过依据逻辑地址存储数据,可以充分保留数据之间的空间局部性。通过依据内存数据管理结构的申请时间和当前时间的偏差,可以将数据写入到满足时间偏差要求的目标内存数据管理结构,充分保留数据之间的时间局部性,实现了对数据的空间局部性和时间局部性的兼顾,极大的提高了缓存空间的性能。
图6为本申请实施例提供的一种电子设备的结构图,如图6所示,电子设备包括:存储器20,用于存储计算机程序;
处理器21,用于执行计算机程序时实现如上述实施例数据缓存方法的步骤。
本实施例提供的电子设备可以包括但不限于智能手机、平板电脑、笔记本电脑或台式电脑等。
其中,处理器21可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器21可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器21也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器21可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器21还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器20可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器20还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。本实施例中,存储器20至少用于存储以下计算机程序201,其中,该计算机程序被处理器21加载并执行之后,能够实现前述任一实施例公开的数据缓存方法的相关步骤。另外,存储器20所存储的资源还可以包括操作系统202和数据203等,存储方式可以是短暂存储或者永久存储。其中,操作系统202可以包括Windows、Unix、Linux等。数据203可以包括但不限于每个缓存区域对应的逻辑地址等。
在一些实施例中,电子设备还可包括有显示屏22、输入输出接口23、通信接口24、电源25以及通信总线26。
本领域技术人员可以理解,图6中示出的结构并不构成对电子设备的限定,可以包括比图示更多或更少的组件。
可以理解的是,如果上述实施例中的数据缓存方法以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,执行本申请各个实施例方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电可擦除可编程ROM、寄存器、硬盘、可移动磁盘、CD-ROM、磁碟或者光盘等各种可以存储程序代码的介质。
基于此,本发明实施例还提供了一种计算机可读存储介质,计算机可读存储介质上存储有计算机程序,计算机程序被处理器执行时实现如上述数据缓存方法的步骤。
以上对本申请实施例所提供的一种数据缓存方法、装置、设备和计算机可读存储介质进行了详细介绍。说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的装置而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
以上对本申请所提供的一种数据缓存方法、装置、设备和计算机可读存储介质进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。
Claims (20)
1.一种数据缓存方法,其特征在于,包括:
在接收到写请求的情况下,从多个缓存区域中选取与所述写请求携带的目标逻辑地址匹配的目标缓存区域;
在所述目标缓存区域无对应的内存数据管理结构的情况下,对所述目标缓存区域建立内存数据管理结构并标记申请时间,并将所述内存数据管理结构挂载到时间队列;将所述写请求携带的数据写入到所述内存数据管理结构;
在所述目标缓存区域有对应的内存数据管理结构的情况下,判断所述内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内;在内存数据管理结构的申请时间与当前时间的时间间隔不在设定的阈值范围内的情况下,建立新的内存数据管理结构并标记申请时间,并将新的内存数据管理结构挂载到时间队列;将写请求携带的数据记录到新的内存数据管理结构中。
2.根据权利要求1所述的数据缓存方法,其特征在于,所述在所述目标缓存区域无对应的内存数据管理结构的情况下,对所述目标缓存区域建立内存数据管理结构并标记申请时间包括:
在所述目标缓存区域无对应的内存数据管理结构的情况下,依据所述目标缓存区域所对应的逻辑地址范围以及当前时间,构建所述目标缓存区域对应的内存数据管理结构;
将所述当前时间标记为所述内存数据管理结构的申请时间。
3.根据权利要求1所述的数据缓存方法,其特征在于,所述将所述内存数据管理结构挂载到时间队列包括:
根据所述内存数据管理结构的申请时间,将所述内存数据管理结构的标识信息按照时间顺序挂载到所述时间队列。
4.根据权利要求1所述的数据缓存方法,其特征在于,还包括:
在所述内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据存储到所述内存数据管理结构中所述目标逻辑地址指向的位置。
5.根据权利要求4所述的数据缓存方法,其特征在于,在所述目标缓存区域对应的内存数据管理结构有多个的情况下,所述判断所述内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内包括:
判断最新建立的内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内。
6.根据权利要求5所述的数据缓存方法,其特征在于,所述在所述内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据存储到所述内存数据管理结构中所述目标逻辑地址指向的位置包括:
在所述最新建立的内存数据管理结构的申请时间与当前时间的时间间隔在设定的阈值范围内的情况下,将所述写请求携带的数据写入到所述最新建立的内存数据管理结构中所述目标逻辑地址指向的位置。
7.根据权利要求4所述的数据缓存方法,其特征在于,所述将所述写请求携带的数据存储到所述内存数据管理结构中所述目标逻辑地址指向的位置包括:
判断所述内存数据管理结构中目标位置是否存在数据;其中,所述目标位置为所述目标逻辑地址所指向的位置;
在所述内存数据管理结构中目标位置存在数据的情况下,将所述写请求携带的数据覆盖写入到所述目标位置;
在所述内存数据管理结构中目标位置不存在数据的情况下,将所述写请求携带的数据写入到所述目标位置。
8.根据权利要求4所述的数据缓存方法,其特征在于,所述建立新的内存数据管理结构并标记申请时间包括:
依据所述目标缓存区域所对应的逻辑地址范围以及当前时间,构建新的内存数据管理结构;
将所述当前时间标记为所述新的内存数据管理结构的申请时间。
9.根据权利要求4所述的数据缓存方法,其特征在于,所述将所述新的内存数据管理结构挂载到时间队列包括:
根据所述新的内存数据管理结构的申请时间,将所述新的内存数据管理结构的标识信息按照时间顺序挂载到所述时间队列。
10.根据权利要求1所述的数据缓存方法,其特征在于,所述将所述写请求携带的数据写入到所述内存数据管理结构之后还包括:
对写入所述内存数据管理结构的数据设置写标识。
11.根据权利要求10所述的数据缓存方法,其特征在于,还包括:
在多个所述缓存区域的总已用空间量达到设定的水位阈值的情况下,将各所述内存数据管理结构中存储的设置有写标识的数据以追加写方式存入硬盘。
12.根据权利要求10所述的数据缓存方法,其特征在于,还包括:
在多个所述缓存区域的总已用空间量达到设定的水位阈值的情况下,选取出申请时间与当前时间的时间间隔超过设定的时间阈值的待处理内存数据管理结构;
依据所述待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘。
13.根据权利要求12所述的数据缓存方法,其特征在于,在所述依据所述待处理内存数据管理结构在时间链表中的顺序,将设置有写标识的数据以追加写方式存入硬盘之后还包括:
将各所述待处理内存数据管理结构中存储的数据的写标识调整为读标识。
14.根据权利要求13所述的数据缓存方法,其特征在于,还包括:
按照设定的周期时间,将设置有读标识的数据及其所属的内存数据管理结构删除。
15.根据权利要求1所述的数据缓存方法,其特征在于,还包括:
在接收到数据读取请求的情况下,依据所述数据读取请求携带的逻辑地址查询匹配的第一内存数据管理结构;
在所述第一内存数据管理结构中存在与所述数据读取请求携带的逻辑地址对应的目标数据的情况下,从所述第一内存数据管理结构中读取所述目标数据。
16.根据权利要求15所述的数据缓存方法,其特征在于,还包括:
在所述匹配的第一内存数据管理结构中不存在与所述数据读取请求携带的逻辑地址对应的目标数据的情况下,从硬盘中读取与所述数据读取请求携带的逻辑地址匹配的目标数据。
17.根据权利要求16所述的数据缓存方法,其特征在于,还包括:
从所述硬盘中预读取与所述目标数据相邻的数据,并将所述相邻的数据放入对应的内存数据管理结构。
18.一种数据缓存装置,其特征在于,包括选取单元、建立单元、挂载单元、第一写入单元和第二写入单元;
所述选取单元,用于在接收到写请求的情况下,从多个缓存区域中选取与所述写请求携带的目标逻辑地址匹配的目标缓存区域;
所述建立单元,用于在所述目标缓存区域无对应的内存数据管理结构的情况下,对所述目标缓存区域建立内存数据管理结构并标记申请时间;
所述挂载单元,用于将所述内存数据管理结构挂载到时间队列;
所述第一写入单元,用于将所述写请求携带的数据写入到所述内存数据管理结构;
所述第二写入单元,用于在所述目标缓存区域有对应的内存数据管理结构的情况下,判断所述内存数据管理结构的申请时间与当前时间的时间间隔是否在设定的阈值范围内;在内存数据管理结构的申请时间与当前时间的时间间隔不在设定的阈值范围内的情况下,建立新的内存数据管理结构并标记申请时间,并将新的内存数据管理结构挂载到时间队列;将写请求携带的数据记录到新的内存数据管理结构中。
19.一种电子设备,其特征在于,包括:
存储器,用于存储计算机程序;
处理器,用于执行所述计算机程序以实现如权利要求1至17任意一项所述数据缓存方法的步骤。
20.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质上存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至17任意一项所述数据缓存方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310219993.0A CN115952110B (zh) | 2023-03-09 | 2023-03-09 | 一种数据缓存方法、装置、设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310219993.0A CN115952110B (zh) | 2023-03-09 | 2023-03-09 | 一种数据缓存方法、装置、设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115952110A CN115952110A (zh) | 2023-04-11 |
CN115952110B true CN115952110B (zh) | 2023-06-06 |
Family
ID=85891324
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310219993.0A Active CN115952110B (zh) | 2023-03-09 | 2023-03-09 | 一种数据缓存方法、装置、设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115952110B (zh) |
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008142A (zh) * | 2019-04-16 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 存储数据管理方法、装置、设备及计算机可读存储介质 |
Family Cites Families (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
EP0551789A1 (en) * | 1992-01-17 | 1993-07-21 | International Business Machines Corporation | Apparatus for recovering lost buffers in a data processing system |
JP4047908B2 (ja) * | 2004-01-19 | 2008-02-13 | トレック・2000・インターナショナル・リミテッド | メモリアドレスマッピングテーブルを使用するポータブルデータ記憶デバイス |
JP4405533B2 (ja) * | 2007-07-20 | 2010-01-27 | 株式会社東芝 | キャッシュ方法及びキャッシュ装置 |
CN104268094B (zh) * | 2014-09-23 | 2017-05-03 | 浪潮电子信息产业股份有限公司 | 一种优化的闪存地址映射方法 |
US9501420B2 (en) * | 2014-10-22 | 2016-11-22 | Netapp, Inc. | Cache optimization technique for large working data sets |
CN105930096B (zh) * | 2016-04-12 | 2019-01-11 | 中国民航信息网络股份有限公司 | 一种基于PageRank的数据块预缓存方法 |
US10642532B2 (en) * | 2017-02-28 | 2020-05-05 | International Business Machines Corporation | Storing data sequentially in zones in a dispersed storage network |
WO2018189847A1 (ja) * | 2017-04-12 | 2018-10-18 | 株式会社日立製作所 | ストレージ装置およびキャッシュメモリ管理方法 |
JP2022188903A (ja) * | 2021-06-10 | 2022-12-22 | キオクシア株式会社 | 情報処理装置および方法 |
CN115757203B (zh) * | 2023-01-10 | 2023-10-10 | 摩尔线程智能科技(北京)有限责任公司 | 访存策略管理方法及装置、处理器和计算设备 |
-
2023
- 2023-03-09 CN CN202310219993.0A patent/CN115952110B/zh active Active
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110008142A (zh) * | 2019-04-16 | 2019-07-12 | 苏州浪潮智能科技有限公司 | 存储数据管理方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN115952110A (zh) | 2023-04-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107066393B (zh) | 提高地址映射表中映射信息密度的方法 | |
TWI684099B (zh) | 剖析快取替代 | |
US7165144B2 (en) | Managing input/output (I/O) requests in a cache memory system | |
US7360015B2 (en) | Preventing storage of streaming accesses in a cache | |
CN108459826B (zh) | 一种处理io请求的方法及装置 | |
CN103678523B (zh) | 分布式高速缓存cache数据访问方法和装置 | |
CN107797760B (zh) | 一种访问缓存信息的方法、装置与固态驱动器 | |
CN104156321B (zh) | 一种数据预取的方法以及装置 | |
US11269783B2 (en) | Operating method for data storage device | |
CN116821011B (zh) | 参数确定及数据读写方法、处理器、装置、计算机设备 | |
CN106776361B (zh) | 一种面向大规模非易失性存储介质的缓存方法和系统 | |
CN102169464B (zh) | 一种用于非易失性存储器的缓存方法、装置及智能卡 | |
CN115952110B (zh) | 一种数据缓存方法、装置、设备和计算机可读存储介质 | |
CN111061429B (zh) | 一种数据访问方法、装置、设备、介质 | |
CN111459848B (zh) | 一种文件碎片的整理方法、装置、存储介质及电子设备 | |
US11789908B2 (en) | Offloading memory maintenance for a log-structured file system | |
CN115344201A (zh) | 数据存储方法、数据查询方法以及装置 | |
CN108984432B (zh) | 一种处理io请求的方法及装置 | |
CN109478163A (zh) | 用于在高速缓存条目处标识存储器访问请求的待决的系统和方法 | |
CN113485642A (zh) | 数据缓存方法及装置 | |
CN111796757A (zh) | 一种固态硬盘缓存区管理方法和装置 | |
CN108984128B (zh) | 一种数据读取方法及装置 | |
CN117235088B (zh) | 一种存储系统的缓存更新方法、装置、设备、介质及平台 | |
CN117806570B (zh) | 在线内存扩展方法、装置、设备及存储介质 | |
US20210263648A1 (en) | Method for managing performance of logical disk and storage array |
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 |