CN117389909A - 内存数据淘汰方法和装置 - Google Patents

内存数据淘汰方法和装置 Download PDF

Info

Publication number
CN117389909A
CN117389909A CN202311392257.1A CN202311392257A CN117389909A CN 117389909 A CN117389909 A CN 117389909A CN 202311392257 A CN202311392257 A CN 202311392257A CN 117389909 A CN117389909 A CN 117389909A
Authority
CN
China
Prior art keywords
read
memory table
state memory
state
data
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
Application number
CN202311392257.1A
Other languages
English (en)
Inventor
刘易
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Shanghai Bilibili Technology Co Ltd
Original Assignee
Shanghai Bilibili Technology Co Ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Shanghai Bilibili Technology Co Ltd filed Critical Shanghai Bilibili Technology Co Ltd
Priority to CN202311392257.1A priority Critical patent/CN117389909A/zh
Publication of CN117389909A publication Critical patent/CN117389909A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0253Garbage collection, i.e. reclamation of unreferenced memory

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

本申请实施方式了提供一种内存数据淘汰方法,该内存数据淘汰方法用于内存存储系统中,内存存储系统通过多个内存表存储数据,多个内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期。所述方法包括:扫描一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间。根据每个只读状态内存表的只读状态存活时间以及每个只读状态内存表的只读状态存活周期,确定目标只读状态内存表。回收目标只读状态内存表,以释放目标只读状态内存表对应的内存资源。本申请实施方式的技术方案可以提高到期数据的回收效率以及提高释放到期数据占用的内存资源的速度。

Description

内存数据淘汰方法和装置
技术领域
本申请涉及计算机技术领域,尤其涉及一种内存数据淘汰方法、装置、计算机设备、计算机可读存储介质。
背景技术
随着互联网应用的不断迭代发展,对高性能和低延迟的存储需求越来越高,基于磁盘的数据库存储系统已经无法满足某些场景需求,基于内存的存储系统逐渐出现,如基于内存的KV(Key-Value)存储系统。
然而,上述基于内存的存储系统在数据较多时,会过度占用内存资源,影响存储系统的性能。
需要说明的是,上述内容并不必然是现有技术,也不用于限制本申请的专利保护范围。
发明内容
本申请实施例提供一种内存数据淘汰方法及相关设备,以解决相关技术存在的问题,技术方案如下:
第一方面,本申请实施方式提供了一种内存数据淘汰方法,所述内存数据淘汰方法用于内存存储系统中,所述内存存储系统通过多个内存表存储数据,所述多个内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期;所述方法包括:
扫描所述一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间;
根据每个只读状态内存表的只读状态存活时间以及每个只读状态内存表的只读状态存活周期,确定目标只读状态内存表;其中,所述目标只读状态内存表为到期的只读状态内存表;
回收所述目标只读状态内存表,以释放所述目标只读状态内存表对应的内存资源。
第二方面,本申请实施方式提供了一种内存数据淘汰装置,所述内存数据淘汰装置用于内存存储系统中,所述内存存储系统通过多个内存表存储数据,所述多个内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期;所述装置包括:
扫描模块,用于扫描所述一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间;
第一确定模块,用于根据每个只读状态内存表的只读状态存活时间以及每个只读状态内存表的只读状态存活周期,确定目标只读状态内存表;其中,所述目标只读状态内存表为到期的只读状态内存表;
第一回收模块,用于回收所述目标只读状态内存表,以释放所述目标只读状态内存表对应的内存资源。
第三方面,本申请实施方式提供了一种电子设备,该电子设备包括:至少一个处理器;以及与至少一个处理器通信连接的存储器;其中,存储器存储有可被至少一个处理器执行的指令,以使至少一个处理器能够执行上述内存数据淘汰方法。
第四方面,本申请实施方式提供了一种计算机可读存储介质,计算机可读存储介质存储计算机指令,当计算机指令在计算机上运行时,上述各方面任一种实施方式中的方法被执行。
上述技术方案中的优点或有益效果至少包括:
以内存表的形式存储数据,内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期。在此基础上,通过扫描确定每个只读状态内存表的只读状态存活时间,继而根据每个只读状态内存表的只读状态存活时间以及只读状态存活周期,确定每个只读状态内存表是否到期。在某个只读状态内存表到期的情况下,将到期的只读状态内存表回收,以快速释放对应的内存资源。可知,在本方案中,在只读状态内存表到期之后,通过回收整个只读状态内存表来同时回收只读状态内存表中的所有过期数据,从而提高过期数据的回收效率以及提高释放过期数据占用的内存资源的速度。
附图说明
附图示例性地示出了实施方式并且构成说明书的一部分,与说明书的文字描述一起用于讲解实施方式的示例性实施方式。所示出的实施方式仅出于例示的目的,并不限制权利要求的范围。在所有附图中,相同的附图标记指代类似但不一定相同的要素。
图1示意性示出了根据本申请一实施方式的内存数据淘汰方法的运行环境图;
图2示意性示出了根据本申请一实施方式的内存数据淘汰方法的流程图;
图3示意性示出了根据本申请一实施方式的内存数据淘汰方法的新增流程图;
图4示意性示出了根据本申请一实施方式的内存数据淘汰方法的新增流程图;
图5示意性示出了根据本申请一实施方式的内存数据淘汰方法的新增流程图;
图6示意性示出了根据本申请一实施方式的内存数据淘汰方法的新增流程图;
图7示意性示出了图6中步骤S600的子步骤流程图;
图8示意性示出了图6中步骤S600的子步骤流程图;
图9示意性示出了根据本申请一实施方式的内存数据淘汰方法的新增流程图;
图10示意性示出了根据本申请一实施方式的内存数据淘汰方法的新增流程图;
图11示意性示出了根据本申请一实施方式的内存数据淘汰装置的框图;及
图12示意性示出了根据本申请一实施方式中的计算机设备的硬件架构示意图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施方式,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施方式仅用以解释本申请,并不用于限定本申请。基于本申请中的实施方式,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施方式,都属于本申请保护的范围。
需要说明的是,在本申请实施方式中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施方式之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本申请要求的保护范围之内。
在本申请的描述中,需要理解的是,步骤前的数字标号并不标识执行步骤的前后顺序,仅用于方便描述本申请及区别每一步骤,因此不能理解为对本申请的限制。
首先,提供本申请涉及的术语解释:
TTL(Time To Live):数据在存储系统(如KV存储系统)的存活周期。
Memtable(内存表):一批存储在内存中数据(如KV数据)的集合,内存表的数据结构可以是跳表、红黑树、哈希表等。
LRU(Least Recently Used):一种缓存淘汰策略,当缓存满了而且需要添加新的数据时,会淘汰最久没有使用的数据。
LFU(Least Frequently Used):一种缓存淘汰策略,当缓存满了而且需要添加新的数据时,会淘汰掉使用频率最低的数据。如果存在相同使用频率的数据,则再根据使用时间间隔,将最久未使用的数据淘汰。
KV存储系统(Key-Value存储系统):一种分布式存储系统,KV存储系统以键值对的形式存储数据。
其次,为方便本领域技术人员理解本申请实施方式提供的技术方案,下面对相关技术进行说明:
随着互联网应用不断迭代发展,对高性能和低延迟的存储需求越来越高,传统的基于磁盘的关系型数据库已经无法满足某些场景需求。加上伴随着计算机硬件的发展,内存的使用成本逐渐下降,基于内存的存储系统(如KV存储系统)越来越流行于各种互联网应用场景。基于内存的KV存储系统有redis和memcache等,此外还有基于不同编程语言开发的KV内存存储库。
然而上述基于内存的存储系统,存在以下缺陷:(1)数据(如Key)在TTL到期后不能及时删除,占用的内存资源也不能立即释放。(2)内存占用达到阈值后,基于LRU、LFU算法的淘汰策略会占用系统CPU资源,可能会影响核心服务的稳定性。此外,随机淘汰的策略可能会删除预期外的数据,影响缓存命中率。(3)对于访问频率跟时间强相关的数据(如KV),没有较好的缓存淘汰方法。如对象存储分片上传的分片元数据,在对象完整上传结束后基本不会被访问。
为此,本申请实施方式提供了一种内存数据淘汰技术方案。在该技术方案中,(1)TTL相同的缓存实例维护多个Memtable,以Memtable为粒度管理TTL,到期后立即回收整个Memtable的内存资源;(2)内存占用达到阈值后,直接淘汰存活时间最久且已被设置成只读状态的Memtable,减少了LRU、LF U算法带来的CPU资源开销,并且越早写入的数据(如KV)越先被删除,具备时序性。具体见后文。
最后,为了方便理解,下面提供一个示例性运行环境。
如图1所示,一个内存存储系统(如基于内存的KV存储系统)通过多个内存表存储数据,所述多个内存表包括一个读写状态内存表和一个或多个只读状态内存表。所述读写状态内存表用于数据的读写和删除,所述只读状态内存表用于数据的读取。一个内存存储系统分配一个线程,该线程可以用于定时扫描所述一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间。
下面以内存存储系统为执行主体,通过多个实施方式介绍本申请的技术方案。须知,这些实施方式可以由多种不同的形式来实施,并且不应当被解释为只限于这里所阐述的实施方式。
图2示意性示出了根据本申请一实施方式的内存数据淘汰方法的流程图。
所述内存数据淘汰方法用于内存存储系统中,所述内存存储系统通过多个内存表存储数据,所述多个内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期。
如图2所示,该内存数据淘汰方法可以包括步骤200~204,其中:
步骤200,扫描所述一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间。
内存表可以是一批存储在内存中数据(如KV数据)的集合。例如,在KV存储系统中,所述内存表可以用于存储键值对,每个键(Key)唯一标识一个数据项,而值(Value)则存储了与该键相关联的数据,这使得对数据的读取和写入较为快速。
内存表可以有多种不同的数据结构,如:(1)哈希表(Hash Table):通过哈希函数将键映射到唯一的索引位置来存储数据的数据结构,具有快速的访问性能。(2)跳表(SkipList):一种多层链表结构,用于实现快速查找。(3)红黑树(Red-Black Tree):一种自平衡的二叉搜索树,可以用于有序数据的高效插入、删除和查找操作。(4)有序映射表(OrderedMap):一种存储键值对并维护键的有序性的数据结构。
只读状态内存表也是存储在内存中的数据表,只读状态内存表只能进行读取操作,无法进行写入、更新或删除操作,即所述只读状态内存表中的数据内容不可修改或编辑,只能被读取。
所述只读状态存活时间是指内存表从设置为只读状态至当前(扫描到的时间节点)之间的时间长度。如,只读状态内存表1设置为只读状态的时间为2023年10月7号0点整,现在的扫描时间为2023年10月8号0点整,则现在所述只读状态存活时间为24小时整。
在一些实施方式中,可以通过一个异步线程定时扫描一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间,如可以每隔5分钟扫描一次,或者在每天晚上0点整进行扫描,在此不做限定。
步骤202,根据每个只读状态内存表的只读状态存活时间以及每个只读状态内存表的只读状态存活周期,确定目标只读状态内存表。其中,所述目标只读状态内存表为到期的只读状态内存表。
所述只读状态存活周期是指从内存表设置为只读状态至删除回收的时间间隔。所述只读状态存活周期可以根据内存表中数据的重要性、存储成本、安全性等因素进行设置,例如,若所述内存表中的数据较为重要,可以将对应的只读状态存活周期设置为较长时间,在此不做限定。
以内存表A为例:该内存表A被设置为只读状态之前,是可写入的,例如可以按照时间顺序写入多条数据。每条数据的存活周期相同,每条数据的存活周期可对应为该内存表A被设置为只读状态的只读状态存活周期。由于数据是按时间顺序存储的,因此,最后一条写入到内存表A的数据a写入时间对应该内存表A被设置为只读状态内存表的存活时间起点。因此对只读状态存储表来说,只读状态内存表中所有数据会等到写入时间最晚的数据到期之后,一起被回收删除。也就是说,该内存表A中的部分数据(除写入时间最晚的数据外的所有数据)到期后并不会立即删除回收,这部分数据会采取延后删除的技术方案。即直至写入时间最晚的数据到期之后,才会将整个只读状态内存表中的所有数据回收删除。例如,只读状态内存表1中存在3条数据,即数据1、数据2、数据3,其中,数据1的写入时间为2023年10月7号0点整,数据2的写入时间为2023年10月7号1点整,数据3的写入时间为2023年10月7号2点整。若只读状态存活周期(也即每条数据的存活周期)为1天整,则数据1的到期时间应为2023年10月8号1点整,数据2的到期时间为2023年10月8号2点整,数据3的写入时间为2023年10月8号3点整。在数据1、2到期之后,数据1、2并不会被直接将删除,而是会等到数据3到期后,也即等到2023年10月8号3点整时,与数据3一起被删除。即在2023年10月8号3点整时,将整个只读状态内存表1回收删除,并释放只读状态内存表1对应的内存资源。
在示例性的应用中,若存在多个只读状态内存表,如存在3个只读状态内存表(即只读状态内存表1、只读状态内存表2、只读状态内存表3)。其中,只读状态内存表1的只读状态存活时间为24小时整,只读状态存活周期为1天整。只读状态内存表2的只读状态存活时间为18小时整,只读状态存活周期为1天整。只读状态内存表3的只读状态存活时间为12小时整,只读状态存活周期为1天整。将每个只读状态内存表的只读状态存活时间与只读状态存活周期比对,可知,只读状态内存表1已到期,只读状态内存表2、3未到期,即此时的目标只读状态内存表为只读状态内存表1。
步骤204,回收所述目标只读状态内存表,以释放所述目标只读状态内存表对应的内存资源。
回收目标只读状态内存表是指释放或清理内存中的目标只读状态内存表,以释放目标只读状态内存表占用的内存资源,减少不必要的内存占用。释放的内存资源可以重新用于其他用途,如用于存储新创建的读写状态内存表或用于其他操作。
在本实施方式中,以内存表的形式存储数据,内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期。在此基础上,通过扫描确定每个只读状态内存表的只读状态存活时间,继而根据每个只读状态内存表的只读状态存活时间以及只读状态存活周期,确定每个只读状态内存表是否到期。在某个只读状态内存表到期的情况下,将到期的只读状态内存表回收,以快速释放对应的内存资源。可知,在本实施方式中,在只读状态内存表到期之后,通过回收整个只读状态内存表来同时回收只读状态内存表中的所有过期数据,从而提高过期数据的回收效率以及提高释放过期数据占用的内存资源的速度。
在本申请一实施方式中,如图3所示,所述方法还可以包括:
步骤300,在所述内存存储系统的内存占用达到最大存储阈值且所述多个只读状态内存表未到期的情况下,从所述一个或多个只读状态内存表中确定待淘汰内存表,所述待淘汰内存表为所述一个或多个只读状态内存表中存活时间最长的只读状态内存表。
步骤302,回收所述待淘汰内存表,以释放所述待淘汰内存表对应的内存资源。
所述最大存储阈值可以是指该内存存储系统所能够容纳的数据的上限或最大限制(如可以为可存储的KV数量的上限),或者内存存储系统中的资源占用上限。
所述待淘汰内存表为所述一个或多个只读状态内存表中存活时间最长的只读状态内存表,其中,所述存活时间既可以指只读状态内存表从创建至今的时间间隔,也可以指该只读状态内存表从设置为只读状态至今的时间间隔,在此不做限定。
在示例性的应用中,若所述内存存储系统的最大存储阈值为1TB,且该内存存储系统包括3个只读状态内存表(即只读状态内存表1、只读状态内存表2、只读状态内存表3)。其中,只读状态内存表1的存活时间为3天整,只读状态内存表2的存活时间为2天整,只读状态内存表3的存活时间为1天整。可知,这3个只读状态内存表中只读状态内存表1的存活时间最长。若此时只读状态内存表1、2、3皆未到期且该内存存储系统的内存占用达到1TB,则需要回收存活时间最长的只读状态内存表,即回收只读状态内存表1,以释放只读状态内存表1对应的内存资源。需要说明的是,该存储系统中的只读状态内存表根据创建时间存储在有序队列中,即在该有序队列中,有序队列中的第一个内存表为待淘汰内存表。
在上述实施方式中,内存占用达到最大存储阈值后,直接淘汰存活时间最久的只读状态内存表(即所述有序队列中的第一个内存表),无需使用LRU、LFU算法确定待淘汰数据,减少对CPU资源的消耗,提高淘汰内存数据的效率。此外,直接淘汰存活时间最久的只读状态内存表,使得创建时间越早的内存表(内存表中的数据写入时间也相应较早)越先被删除,使得数据淘汰具备时序性,从而可以较好地淘汰访问频率与时间强相关的数据,减小对缓存命中率的影响。
在本申请一实施方式中,所述读写状态内存表用于数据的读写和删除。如图4所示,所述方法还可以包括:在所述读写状态内存表达到存储阈值的情况下,将所述读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,以及创建新的读写状态内存表。
所述读写状态内存表是一种存储在内存中的数据表,所述读写状态内存表既可以用于数据的读取,也可以用于数据的写入、更新或删除。通过执行数据的写入、更新或删除等操作,可以动态地改变读写状态内存表中的数据。
若所述读写状态内存表达到存储阈值,则表明所述读写状态内存表已经写满了数据,无法再写入数据。此时所述读写状态内存表无法再正常执行写入操作,因此,需要把读写状态内存表设置为只读状态,同时创建一个新的读写状态内存表用以数据的写入、删除等。
在上述实施方式中,在读写状态内存表达到存储阈值的情况下,将读写状态内存表设置为只读状态(即设置为只读状态内存表),并创建新的读写状态内存表,使得内存存储系统可以正确有效地响应读写操作和删除操作,保障内存存储系统的有效运行。
在本申请一实施方式中,所述读写状态内存表设有读写状态存活周期。所述方法还可以包括:在所述读写状态内存表的存活时间达到所述读写状态存活周期的情况下,将所述读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,以及创建新读写状态内存表。
所述读写状态存活周期指内存表从创建到设置成只读状态的时间间隔。
所述读写状态内存表的存活时间是指读写状态内存表从创建至今的时间间隔。
若所述内存存储系统请求写入的数据量较少,则该内存存储系统中的读写状态内存表在较长时间内都无法写满,即在较长时间内都无法达到存储阈值。相对应地,所述读写状内存表会一直保持读写状态,而无法被设置为只读状态,进而无法根据只读状态存活周期对读写状内存表中的数据进行有效的生命周期管理。因此,在上述情况下,为了对读写状内存表中的数据进行有效的生命周期管理,可以对每个读写状态内存表设置相应的读写状态存活周期。在读写状态内存表的存活时间达到读写状态存活周期的情况下,将读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,进而使得设置为只读状态的内存表可以在达到只读状态存活周期之后被回收删除。这样做的好处:缓解因读写状态内存表写入数据较少而导致读写状态内存表无法被设置为只读状态,进而无法开始计算只读状态存活时间,使得内存表中数据可能在过期较长时间后仍然无法被及时清除,无法及时释放占用的内存资源的情况。
在上述实施方式中,若读写状态内存表的存活时间达到了读写状态存活周期,可以将读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,从而可以有效地对内存表以及内存表中数据进行生命周期管理,及时清除过期数据,减少内存资源的浪费。
在本申请一实施方式中,如图5所示,所述方法还可以包括:
步骤500,响应针对所述内存存储系统的删除请求,确定待删除数据。
步骤502,在所述读写状态内存表存在所述待删除数据的情况下,在所述待删除数据上设置已删除标签。
设置已删除标签是对数据打上一个标签或标记,以指示数据已被删除或不再有效,并不是真正地将数据从内存表中删除。
在上述实施方式中,对于针对内存存储系统的删除请求,若读写状态内存表存在待删除数据,则直接在待删除数据上设置已删除标签,使得在后续的读取操作中可以正确响应读请求,即不返回设置已删除标签的数据。此外,设置已删除标签的待删除数据不会立即被删除,使得这些待删除数据可以在内存表达到只读状态存活周期时被统一删除,从而无需一条一条进行删除,提高待删除数据删除的效率。
在本申请一实施方式中,所述方法还可以包括:在所述读写状态内存表不存在所述待删除数据的情况下,将带有删除标签的待删除数据写入至所述读写状态内存表中。
在一些实施方式中,将带有删除标签的待删除数据成功写入至读写状态内存表中之后,若所述读写状态内存表达到存储阈值,则需要将所述读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,以及创建新的读写状态内存表。
示例性的应用中,若有需要删除的待删除数据,则需要先判断内存存储系统中的读写状态表是否存在该待删除数据,若不存在,则表明待删除数据可能存在多个只读状态内存表中。此时,由于待删除数据可能在多个只读状态内存表中的任意一个只读状态内存表。若要找到该待删除数据,可能需要遍历多个内存表,从而导致需要消耗较长时间以及较多资源去寻找。因此,为了提高对删除请求的响应效率,可以直接在读写状态内存表中写入带有删除标签的待删除数据,以表明该待删除数据已被删除,从而无需从多个只读状态内存表中寻找待删除数据,提高对删除请求的处理效率。
在上述实施方式中,在读写状态内存表不存在待删除数据的情况下,直接将带有删除标签的待删除数据写入至读写状态内存表中,无需从多个只读状态内存表中寻找待删除数据,提高对删除请求的响应效率。
在本申请一实施方式中,如图6所示,所述方法还可以包括:步骤600,响应于针对所述内存存储系统的读请求,从所述多个内存表中读取并返回目标响应数据。
所述多个内存表可以包括一个读写状态内存表和一个或多个只读状态内存表,所述读请求对应的数据可能存在于读写状态内存表中,也可能存在于只读状态内存表中。因此,对于所述读请求,需要从读写状态内存表和只读状态内存表中去读取数据,并返回目标响应数据。
在上述实施方式中,响应于针对内存存储系统的读请求,从多个内存表中读取并返回目标响应数据,从而可以正确以及全面地进行数据读取,减少出现响应数据不存在或读取错误的情况。
在本申请一实施方式中,如图7、8所示,所述步骤600可以包括:
步骤700,从所述多个内存表中读取到多个响应数据。
步骤702,根据所述多个响应数据中每个响应数据的时间属性,将最新的响应数据确定为目标响应数据。
所述多个内存表可以包括一个读写状态内存表和一个或多个只读状态内存表,因此,读请求对应的响应数据可能存在于读写状态内存表中,也可能存在于只读状态内存表中。且若有多个只读状态内存表,则所述多个只读状态内存表中也可能存在多个不同时间属性的响应数据。此时,为了可以获取正确有效的响应数据,可以将读取到的多个响应数据进行时间属性的比对,如可以比对响应数据的创建时间或者响应数据的版本号,将创建时间最新或者版本号最新的响应数据确定为目标响应数据,并返回给客户端。需要说明的是,从所述多个只读状态内存表中读取数据时,可以并发读取。
在上述实施方式中,根据多个响应数据中每个响应数据的时间属性,将最新的响应数据确定为目标响应数据,使得返回的目标响应数据为最新的数据,保障响应读请求的目标响应数据的实时性和准确性。
在本申请一实施方式中,所述步骤600还可以包括:在所述目标响应数据带有删除标签的情况下,返回请求失败信息。
若目标响应数据带有删除标签,则表明所述目标响应数据已被标记为被删除,即所述目标响应数据不存在。
在上述实施方式中,在所述目标响应数据带有删除标签的情况下,返回请求失败信息,保障读请求不会响应已经被删除的数据,从而正确有效地响应读请求。
在本申请一实施方式中,为了实现内存表的幂等性,所述方法还可以包括:
在所述读写状态内存表被设置为只读状态的情况下,响应于多个待写入数据的多个写入请求,创建一个新的读写状态内存表,以用于响应所述多个待写入数据的多个写入请求。
在示例性的应用中,若读写状态内存表达到存储阈值,则此时该读写状态内存表已无法写入新的待写入数据。若有多个待写入数据同时需要写入,可以创建一个新的读写状态内存表,将多个待写入数据写入至所述新的读写状态内存表中。
在上述实施方式中,在读写状态内存表被设置为只读状态的情况下,对于多个待写入数据的多个写入请求,只会创建一个新的读写状态内存表,保障内存存储系统中不会因多个待写入数据的多个写入请求而创建多个读写状态内存表,使得该内存存储系统中只有一个读写状态内存表,从而保障读写状态内存表的正确创建,进而保障后续可以根据读写状态内存表正确地进行数据的写入和删除等操作。
在本申请一实施方式中,所述多个内存表对应目标缓存实例。如图9所示,所述方法还包括:
步骤900,设置所述目标缓存实例的最大存储阈值、内存表个数、内存表的读写状态存活周期以及只读状态存活周期。
步骤902,根据所述目标缓存实例的最大存储阈值以及所述内存表个数,确定内存表的存储阈值。
缓存实例可以是用于存储数据的一种临时性的存储结构或对象,通过将数据保存在快速访问的存储介质中,以减少从较慢的主存储或持久性存储中获取数据的频率,提高数据访问的速度和性能。
所述目标缓存实例中可以包括多个内存表,即可以包括一个读写状态内存表和多个只读状态内存表。
所述目标缓存实例的最大存储阈值是指目标缓存实例中所能容纳的数据的上限以及最大限制,或者目标缓存实例中能够占用的资源上限。
所述内存表个数是指目标缓存实例中可以设置的内存表的数量。
所述内存表的存储阈值可以指内存表所能容纳的数据的上限以及最大限制。
内存表的存储阈值可以等于所述目标缓存实例的最大存储阈值与所述内存表个数的比值。即将目标缓存实例的最大存储阈值除以内存表个数,便可得到内存表的存储阈值。
所述内存表在创建时为读写状态,即为读写状态内存表。读写状态内存表达到预设条件之后会转而设置为只读状态,如,读写状态内存表可以在存活时间达到了读写状态存活周期的情况下,将状态设置为只读状态。设置为只读状态的内存表在存活了只读状态存活周期之后,便会被回收删除,以释放所述只读状态内存表对应的内存资源。
在上述实施方式中,设置好目标缓存实例的最大存储阈值、内存表个数、内存表的读写状态存活周期以及只读状态存活周期。并在此基础上,确定内存表的存储阈值,以便后续可以根据上述设置对内存表以及内存表中的数据进行生命周期管理。
在本申请一实施方式中,如图10所示,所述方法还可以包括:
步骤1000,在所述目标缓存实例初始化的情况下,创建第一个读写状态内存表。
步骤1002,依时间顺序创建第二个读写状态内存表及随后的每个读写状态内存表。其中,所述第二个读写状态内存表及随后的每个读写状态内存表执行创建之前,均以待创建的读写状态内存表的上一个读写状态内存表被设置为只读状态作为执行创建的前置条件。
在所述目标缓存实例初始化的情况下,会创建第一个读写状态内存表,此时目标缓存实例中只有一个读写状态内存表。在第一个读写状态内存表被设置为只读状态的情况下,创建第二个读写状态内存表。在第二个读写状态内存表被设置为只读状态的情况下,创建第三个读写状态内存表。依次类推,在第N个读写状态内存表被设置为只读状态的情况下,创建第N+1个读写状态内存表。需要说明的是,创建的内存表可以根据创建时间存储在有序队列,最新创建的读写状态内存表排列在有序队列的最尾部。
在上述实施方式中,先创建第一个读写状态内存表,第二个读写状态内存表及随后的每个读写状态内存表执行创建之前,均以待创建的读写状态内存表的上一个读写状态内存表被设置为只读状态作为执行创建的前置条件,以此来正确有效地创建内存表并管理内存表的状态(即读写状态、只读状态),进而保障内存存储系统的正确有效运行。
图11示意性示出了根据本申请一实施方式的内存数据淘汰装置的框图,该内存数据淘汰装置可以被分割成一个或多个程序模块,一个或者多个程序模块被存储于存储介质中,并由一个或多个处理器所执行,以完成本申请实施方式。本申请实施方式所称的程序模块是指能够完成特定功能的一系列计算机程序指令段,以下描述将具体介绍本实施方式中各程序模块的功能。如图11所示,用于内存存储系统中,所述内存存储系统通过多个内存表存储数据,所述多个内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期,该内存数据淘汰装置1100可以包括:扫描模块1110、第一确定模块1120、第一回收模块1130,其中:
扫描模块1110,用于扫描所述一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间;
第一确定模块1120,用于根据每个只读状态内存表的只读状态存活时间以及每个只读状态内存表的只读状态存活周期,确定目标只读状态内存表;其中,所述目标只读状态内存表为到期的只读状态内存表;
第一回收模块1130,用于回收所述目标只读状态内存表,以释放所述目标只读状态内存表对应的内存资源。
在本申请一实施方式中,所述内存数据淘汰装置还可以包括第二回收模块,所述第二回收模块用于:
在所述内存存储系统的内存占用达到最大存储阈值且所述多个只读状态内存表未到期的情况下,从所述一个或多个只读状态内存表中确定待淘汰内存表,所述待淘汰内存表为所述一个或多个只读状态内存表中存活时间最长的只读状态内存表;
回收所述待淘汰内存表,以释放所述待淘汰内存表对应的内存资源。
在本申请一实施方式中,所述读写状态内存表用于数据的读写和删除;所述内存数据淘汰装置还可以包括第一设置模块,所述第一设置模块用于:
在所述读写状态内存表达到存储阈值的情况下,将所述读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,以及创建新的读写状态内存表。
在本申请一实施方式中,所述读写状态内存表设有读写状态存活周期;所述内存数据淘汰装置还可以包括第二设置模块,所述第二设置模块用于:
在所述读写状态内存表的存活时间达到所述读写状态存活周期的情况下,将所述读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,以及创建新读写状态内存表。
在本申请一实施方式中,所述内存数据淘汰装置还可以包括第三设置模块,所述第三设置模块用于:
响应针对所述内存存储系统的删除请求,确定待删除数据;
在所述读写状态内存表存在所述待删除数据的情况下,在所述待删除数据上设置已删除标签。
在本申请一实施方式中,所述内存数据淘汰装置还可以包括写入模块,所述写入模块用于:
在所述读写状态内存表不存在所述待删除数据的情况下,将带有删除标签的待删除数据写入至所述读写状态内存表中。
在本申请一实施方式中,所述内存数据淘汰装置还可以包括读取模块,所述读取模块用于:
响应于针对所述内存存储系统的读请求,从所述多个内存表中读取并返回目标响应数据。
在本申请一实施方式中,所述读取模块还用于:
从所述多个内存表中读取到多个响应数据;
根据所述多个响应数据中每个响应数据的时间属性,将最新的响应数据确定为目标响应数据。
在本申请一实施方式中,所述读取模块还用于:
在所述目标响应数据带有删除标签的情况下,返回请求失败信息。
在本申请一实施方式中,所述内存数据淘汰装置还可以包括第一创建模块,所述第一创建模块用于:
在所述读写状态内存表被设置为只读状态的情况下,响应于多个待写入数据的多个写入请求,创建一个新的读写状态内存表,以用于响应所述多个待写入数据的多个写入请求。
在本申请一实施方式中,所述多个内存表对应目标缓存实例;,所述内存数据淘汰装置还可以包括第二确定模块,所述第二确定模块用于:
设置所述目标缓存实例的最大存储阈值、内存表个数、内存表的读写状态存活周期以及只读状态存活周期;
根据所述目标缓存实例的最大存储阈值以及所述内存表个数,确定内存表的存储阈值。
在本申请一实施方式中,所述内存数据淘汰装置还可以包括第二创建模块,所述第二创建模块用于:
在所述目标缓存实例初始化的情况下,创建第一个读写状态内存表;
依时间顺序创建第二个读写状态内存表及随后的每个读写状态内存表;其中,所述第二个读写状态内存表及随后的每个读写状态内存表执行创建之前,均以待创建的读写状态内存表的上一个读写状态内存表被设置为只读状态作为执行创建的前置条件。
图12示出根据本申请一实施方式的电子设备的结构框图。如图12所示,该电子设备包括:存储器1210和处理器1220,存储器1210内存储有可在处理器1220上运行的指令。处理器1220执行该指令时实现上述实施方式中的内存数据淘汰方法。存储器1210和处理器1220的数量可以为一个或多个。该电子设备旨在表示各种形式的数字计算机,诸如,工作台、服务器、刀片式服务器、大型计算机、和其它适合的计算机。本文所示的部件、它们的连接和关系、以及它们的功能仅仅作为示例,并且不意在限制本文中描述的和/或者要求的本申请的实现。
该电子设备还可以包括通信接口1230,用于与外界设备进行通信,进行数据交互传输。各个设备利用不同的总线互相连接,并且可以被安装在公共主板上或者根据需要以其它方式安装。处理器1220可以对在电子设备内执行的指令进行处理,包括存储在存储器中或者存储器上以在外部输入/输出装置(诸如,耦合至接口的显示设备)上显示GUI的图形信息的指令。在其它实施方式中,若需要,可以将多个处理器和/或多条总线与多个存储器和多个存储器一起使用。同样,可以连接多个电子设备,各个设备提供部分必要的操作(例如,作为服务器阵列、一组刀片式服务器、或者多处理器系统)。该总线可以分为地址总线、数据总线、控制总线等。为便于表示,图12中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
可选的,在具体实现上,如果存储器1210、处理器1220及通信接口1230集成在一块芯片上,则存储器1210、处理器1220及通信接口1230可以通过内部接口完成相互间的通信。
应理解的是,上述处理器可以是中央处理器(Central Processing Unit,CPU),还可以是其他通用处理器、数字信号处理器(Digital Dignal Processing,DSP)、专用集成电路(Application Specific Sntegrated Circuit,ASIC)、现场可编程门阵列(FieldProgrammable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者是任何常规的处理器等。值得说明的是,处理器可以是支持进阶精简指令集机器(advanced RISC machines,ARM)架构的处理器。
本申请一实施方式提供了一种计算机可读存储介质(如上述的存储器1210),其存储有计算机指令,该程序被处理器执行时实现本申请实施方式中提供的方法。
可选的,存储器1210可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据内存数据淘汰的电子设备的使用所创建的数据等。此外,存储器1210可以包括高速随机存取存储器,还可以包括非瞬时存储器,例如至少一个磁盘存储器件、闪存器件、或其他非瞬时固态存储器件。在一些实施方式中,存储器1210可选包括相对于处理器1220远程设置的存储器,这些远程存储器可以通过网络连接至内存数据淘汰的电子设备。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
在本说明书的描述中,参考术语“一个实施方式”、“一些实施方式”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施方式或示例描述的具体特征、结构、材料或者特点包括于本申请的至少一个实施方式或示例中。而且,描述的具体特征、结构、材料或者特点可以在任一个或多个实施方式或示例中以合适的方式结合。此外,在不相互矛盾的情况下,本领域的技术人员可以将本说明书中描述的不同实施方式或示例以及不同实施方式或示例的特征进行结合和组合。
此外,术语“第一”、“第二”仅用于描述目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或隐含地包括至少一个该特征。在本申请的描述中,“多个”的含义是两个或两个以上,除非另有明确具体的限定。
流程图中或在此以其他方式描述的任何过程或方法描述可以被理解为,表示包括一个或多个(两个或两个以上)用于实现特定逻辑功能或过程的步骤的可执行指令的代码的模块、片段或部分。并且本申请的优选实施方式的范围包括另外的实现,其中可以不按所示出或讨论的顺序,包括根据所涉及的功能按基本同时的方式或按相反的顺序,来执行功能。
在流程图中表示或在此以其他方式描述的逻辑和/或步骤,例如,可以被认为是用于实现逻辑功能的可执行指令的定序列表,可以具体实现在任何计算机可读介质中,以供指令执行系统、装置或设备(如基于计算机的系统、包括处理器的系统或其他可以从指令执行系统、装置或设备取指令并执行指令的系统)使用,或结合这些指令执行系统、装置或设备而使用。
应理解的是,本申请的各部分可以用硬件、软件、固件或它们的组合来实现。在上述实施方式中,多个步骤或方法可以用存储在存储器中且由合适的指令执行系统执行的软件或固件来实现。上述实施方式方法的全部或部分步骤是可以通过程序来指令相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,该程序在执行时,包括方法实施方式的步骤之一或其组合。
此外,在本申请各个实施方式中的各功能单元可以集成在一个处理模块中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。上述集成的模块如果以软件功能模块的形式实现并作为独立的产品销售或使用时,也可以存储在一个计算机可读存储介质中。该存储介质可以是只读存储器,磁盘或光盘等。
以上所述,仅为本申请的具体实施方式,但本申请的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本申请揭露的技术范围内,可轻易想到其各种变化或替换,这些都应涵盖在本申请的保护范围之内。因此,本申请的保护范围应以权利要求的保护范围为准。

Claims (15)

1.一种内存数据淘汰方法,其特征在于,用于内存存储系统中,所述内存存储系统通过多个内存表存储数据,所述多个内存表包括一个读写状态内存表和一个或多个只读状态内存表,每个只读状态内存表设置有对应的只读状态存活周期;所述方法包括:
扫描所述一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间;
根据每个只读状态内存表的只读状态存活时间以及每个只读状态内存表的只读状态存活周期,确定目标只读状态内存表;其中,所述目标只读状态内存表为到期的只读状态内存表;
回收所述目标只读状态内存表,以释放所述目标只读状态内存表对应的内存资源。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
在所述内存存储系统的内存占用达到最大存储阈值且所述多个只读状态内存表未到期的情况下,从所述一个或多个只读状态内存表中确定待淘汰内存表,所述待淘汰内存表为所述一个或多个只读状态内存表中存活时间最长的只读状态内存表;
回收所述待淘汰内存表,以释放所述待淘汰内存表对应的内存资源。
3.根据权利要求1所述的方法,其特征在于,所述读写状态内存表用于数据的读写和删除;所述方法还包括:
在所述读写状态内存表达到存储阈值的情况下,将所述读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,以及创建新的读写状态内存表。
4.根据权利要求1所述的方法,其特征在于,所述读写状态内存表设有读写状态存活周期;所述方法还包括:
在所述读写状态内存表的存活时间达到所述读写状态存活周期的情况下,将所述读写状态内存表设置为只读状态内存表并设置对应的只读状态存活周期,以及创建新读写状态内存表。
5.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
响应针对所述内存存储系统的删除请求,确定待删除数据;
在所述读写状态内存表存在所述待删除数据的情况下,在所述待删除数据上设置已删除标签。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
在所述读写状态内存表不存在所述待删除数据的情况下,将带有删除标签的待删除数据写入至所述读写状态内存表中。
7.根据权利要求1所述的方法,其特征在于,所述方法还包括:
响应于针对所述内存存储系统的读请求,从所述多个内存表中读取并返回目标响应数据。
8.根据权利要求7所述的方法,其特征在于,从所述多个内存表中读取并返回目标响应数据,包括:
从所述多个内存表中读取到多个响应数据;
根据所述多个响应数据中每个响应数据的时间属性,将最新的响应数据确定为目标响应数据。
9.根据权利要求8所述的方法,其特征在于,从所述多个内存表中读取并返回目标响应数据,还包括:
在所述目标响应数据带有删除标签的情况下,返回请求失败信息。
10.根据权利要求1至4任一项所述的方法,其特征在于,所述方法还包括:
在所述读写状态内存表被设置为只读状态的情况下,响应于多个待写入数据的多个写入请求,创建一个新的读写状态内存表,以用于响应所述多个待写入数据的多个写入请求。
11.根据权利要求1至4任一项所述的方法,其特征在于,所述多个内存表对应目标缓存实例;所述方法还包括:
设置所述目标缓存实例的最大存储阈值、内存表个数、内存表的读写状态存活周期以及只读状态存活周期;
根据所述目标缓存实例的最大存储阈值以及所述内存表个数,确定内存表的存储阈值。
12.根据权利要求11所述的方法,其特征在于,还包括:
在所述目标缓存实例初始化的情况下,创建第一个读写状态内存表;
依时间顺序创建第二个读写状态内存表及随后的每个读写状态内存表;其中,所述第二个读写状态内存表及随后的每个读写状态内存表执行创建之前,均以待创建的读写状态内存表的上一个读写状态内存表被设置为只读状态作为执行创建的前置条件。
13.一种内存数据淘汰装置,其特征在于,所述装置包括:
扫描模块,用于扫描所述一个或多个只读状态内存表,以确定每个只读状态内存表的只读状态存活时间;
第一确定模块,用于根据每个只读状态内存表的只读状态存活时间以及每个只读状态内存表的只读状态存活周期,确定目标只读状态内存表;其中,所述目标只读状态内存表为到期的只读状态内存表;
第一回收模块,用于回收所述目标只读状态内存表,以释放所述目标只读状态内存表对应的内存资源。
14.一种计算机设备,其特征在于,包括:
至少一个处理器;及
与所述至少一个处理器通信连接的存储器;其中:
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1至12中任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质内存储有计算机指令,所述计算机指令被处理器执行时实现如权利要求1至12中任一项所述的方法。
CN202311392257.1A 2023-10-24 2023-10-24 内存数据淘汰方法和装置 Pending CN117389909A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202311392257.1A CN117389909A (zh) 2023-10-24 2023-10-24 内存数据淘汰方法和装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202311392257.1A CN117389909A (zh) 2023-10-24 2023-10-24 内存数据淘汰方法和装置

Publications (1)

Publication Number Publication Date
CN117389909A true CN117389909A (zh) 2024-01-12

Family

ID=89464473

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202311392257.1A Pending CN117389909A (zh) 2023-10-24 2023-10-24 内存数据淘汰方法和装置

Country Status (1)

Country Link
CN (1) CN117389909A (zh)

Similar Documents

Publication Publication Date Title
US11474972B2 (en) Metadata query method and apparatus
US11853549B2 (en) Index storage in shingled magnetic recording (SMR) storage system with non-shingled region
US10078598B1 (en) Maintaining a separate LRU linked list for each thread for multi-threaded access
US9146877B2 (en) Storage system capable of managing a plurality of snapshot families and method of snapshot family based read
US10635359B2 (en) Managing cache compression in data storage systems
CN102782683B (zh) 用于数据库服务器的缓冲池扩展
US8423733B1 (en) Single-copy implicit sharing among clones
US9043334B2 (en) Method and system for accessing files on a storage system
US10353607B2 (en) Bloom filters in a flash memory
CN110018998B (zh) 一种文件管理方法、系统及电子设备和存储介质
US9529731B1 (en) Contention-free approximate LRU for multi-threaded access
CN110109868B (zh) 用于索引文件的方法、装置和计算机程序产品
CN110555001B (zh) 数据处理方法、装置、终端及介质
US20140115244A1 (en) Apparatus, system and method for providing a persistent level-two cache
US9307024B2 (en) Efficient storage of small random changes to data on disk
US9727479B1 (en) Compressing portions of a buffer cache using an LRU queue
WO2019091085A1 (zh) 一种快照比对的方法和装置
KR101779174B1 (ko) 저널링 파일시스템의 데이터 폐기 방법 및 이를 구현하기 위한 메모리 관리 장치
CN113568582B (zh) 数据管理方法、装置和存储设备
CN115427941A (zh) 数据管理系统和控制的方法
CN112148736B (zh) 缓存数据的方法、设备及存储介质
US11494334B2 (en) Embedded reference counts for file clones
US10719240B2 (en) Method and device for managing a storage system having a multi-layer storage structure
US10452496B2 (en) System and method for managing storage transaction requests
US11163446B1 (en) Systems and methods of amortizing deletion processing of a log structured storage based volume virtualization

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