CN115168416A - 数据缓存方法、装置、存储介质及电子装置 - Google Patents
数据缓存方法、装置、存储介质及电子装置 Download PDFInfo
- Publication number
- CN115168416A CN115168416A CN202210738309.5A CN202210738309A CN115168416A CN 115168416 A CN115168416 A CN 115168416A CN 202210738309 A CN202210738309 A CN 202210738309A CN 115168416 A CN115168416 A CN 115168416A
- Authority
- CN
- China
- Prior art keywords
- data
- cache
- data layer
- target
- layer
- 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/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2455—Query execution
- G06F16/24552—Database cache management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
- G06F12/02—Addressing or allocation; Relocation
- G06F12/08—Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
- G06F12/0802—Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
- G06F12/0806—Multiuser, multiprocessor or multiprocessing cache systems
- G06F12/0811—Multiuser, multiprocessor or multiprocessing cache systems with multilevel cache hierarchies
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Data Mining & Analysis (AREA)
- Computing Systems (AREA)
- Computational Linguistics (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明公开了一种数据缓存方法、装置、存储介质及电子装置。其中,该方法包括:获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,多个缓存副本在缓存分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,第一数据层、第二数据层、第三数据层、第四数据层分别对应的缓存数据访问频次依次降低。本发明解决了由于缓存数据较多而导致的内存成本开销大、缓存加载速率低的技术问题。
Description
技术领域
本发明涉及计算机应用领域,具体而言,涉及一种数据缓存方法、装置、存储介质及电子装置。
背景技术
在计算机应用领域中,在进行数据量较大的缓存服务时,通常会导致内存过高、成本开销过大以及数据恢复速率较慢等问题。相关技术中,缓存数据库主要包含两种类型,如社区类缓存数据库和嵌入式数据库。
社区类缓存数据库主要包含两种,如远程字典服务(Remote Dictionary Server,redis)和高速缓存系统(memcache)。社区类缓存数据库的缓存能力全部依赖动态随机存取存储器(Dynamic Random Access Memory,DRAM),而DRAM的价格比持久内存缓存区域(Persistent Memory,PMEM)、硬盘驱动器(Hard Disk Drive,HDD)高,在缓存数据量较大的情况下,会导致内存成本开销过高。另外,待缓存的数据不仅包含频繁查询的热点数据,也可以包含不经常查询的冷数据,而社区类缓存数据库是将热点数据和冷数据一起存放至DRAM中,会导致成本开销较大。
嵌入式数据库主要包括开源的嵌入式数据存储引擎Rocksdb和可持久化数据库LevelDB。SSDB是一套基于LevelDB的非关系型数据库(NoSQL),可用于取代Redis,更适合海量数据的存储。但是,此缓存数据库支持DRAM内存+磁盘层面的两级缓存(cache),并不支持更多层次的cache,例如PMEM,因此在面对节点宕机后的恢复场景时,将缓存数据从磁盘中加载恢复的速率较慢。
因此,在缓存数据量较大的情况下,利用现有技术中社区类缓存数据库或嵌入式数据库进行数据缓存时,会导致内存成本开销大、缓存加载速率低等问题。
针对上述的问题,目前尚未提出有效的解决方案。
发明内容
本发明实施例提供了一种数据缓存方法、装置、存储介质及电子装置,以至少解决由于缓存数据较多而导致的内存成本开销大、缓存加载速率低的技术问题。
根据本发明实施例的一个方面,提供了一种数据缓存方法,包括:
获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,多个缓存副本在缓存分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,第一数据层、第二数据层、第三数据层、第四数据层分别对应的缓存数据访问频次依次降低。
可选地,数据缓存方法还包括:获取数据访问频次与多个键值标识之间的映射关系信息,其中,多个键值标识按照时间顺序进行排列;基于映射关系信息对多个键值标识对应的键值对进行缓存管理。
可选地,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:响应于数据访问频次小于第一预设阈值,基于映射关系信息将多个键值标识对应的键值对从第一数据层对应的目标缓存区域转移至第二数据层对应的目标缓存区域。
可选地,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:响应于数据访问频次小于第二预设阈值,利用空闲链表、刷新链表和最近最少使用置换链表将多个键值标识对应的属性值从第二数据层对应的目标缓存区域转移至第三数据层对应的目标缓存区域。
可选地,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:响应于数据访问频次小于第三预设阈值,基于映射关系信息将多个键值标识对应的属性值从第三数据层对应的目标缓存区域转移至第四数据层对应的目标缓存区域。
可选地,数据缓存方法还包括:响应于数据访问频次小于第四预设阈值,基于映射关系信息将多个键值标识对应的属性值从第四数据层对应的目标缓存区域中进行删除。
可选地,第一数据层对应的目标缓存区域为动态随机存取缓存区域;第二数据层对应的目标缓存区域为持久内存缓存区域;第三数据层对应的目标缓存区域为非易失性缓存区域;第四数据层对应的目标缓存区域为分布式文件系统缓存区域。
根据本发明实施例的另一方面,还提供了一种数据缓存装置,包括:
获取模块,用于获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,多个缓存副本在同一分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;存储模块,用于基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,第一数据层、第二数据层、第三数据层、第四数据层分别对应的缓存数据访问频次依次降低。
可选地,获取模块还用于获取数据访问频次与多个键值标识之间的映射关系信息,其中,多个键值标识按照时间顺序进行排列;数据缓存装置还包括:处理模块,用于基于映射关系信息对多个键值标识对应的键值对进行缓存管理。
可选地,存储模块还用于响应于数据访问频次小于第一预设阈值,基于映射关系信息将多个键值标识对应的键值对从第一数据层对应的目标缓存区域转移至第二数据层对应的目标缓存区域。
可选地,存储模块还用于响应于数据访问频次小于第二预设阈值,利用空闲链表、刷新链表和最近最少使用置换链表将多个键值标识对应的属性值从第二数据层对应的目标缓存区域转移至第三数据层对应的目标缓存区域。
可选地,存储模块还用于响应于数据访问频次小于第三预设阈值,基于映射关系信息将多个键值标识对应的属性值从第三数据层对应的目标缓存区域转移至第四数据层对应的目标缓存区域。
可选地,存储模块还用于响应于数据访问频次小于第四预设阈值,基于映射关系信息将多个键值标识对应的属性值从第四数据层对应的目标缓存区域中进行删除。
可选地,第一数据层对应的目标缓存区域为动态随机存取缓存区域;第二数据层对应的目标缓存区域为持久内存缓存区域;第三数据层对应的目标缓存区域为非易失性缓存区域;第四数据层对应的目标缓存区域为分布式文件系统缓存区域。
根据本发明其中一实施例,还提供了一种非易失性存储介质,存储介质中存储有计算机程序,其中,计算机程序被设置为运行时执行上述任一项中的数据缓存方法。
根据本发明其中一实施例,还提供了一种电子装置,包括存储器和处理器,存储器中存储有计算机程序,处理器被设置为运行计算机程序以执行上述任一项中的数据缓存方法。
在本发明实施例中,通过获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,进而基于数据访问的频次将每个缓存副本存储至包括第一数据层、第二数据层、第三数据层、第四数据层的目标数据层对应的目标缓存区域的方式,达到了对冷热数据进行多级存储的目的,从而实现了在缓存数据较多时降低内存开销成本、提升缓存加载速率的技术效果,进而解决了由于缓存数据较多而导致的内存成本开销大、缓存加载速率低的技术问题。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:
图1是根据本发明其中一实施例的一种数据缓存方法的流程图;
图2是根据本发明其中一实施例的数据缓存系统的示意图;
图3是根据本发明其中一实施例的目标数据层的示意图;
图4是根据本发明其中一实施例的用户接口的示意图;
图5是根据本发明其中一实施例的又一种数据缓存方法的示意图;
图6是根据本发明其中一实施例的又一种数据缓存方法的示意图;
图7是根据本发明其中一实施例的又一种数据缓存方法的示意图;
图8是根据本发明其中一实施例的数据缓存装置的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分的实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本发明保护的范围。
需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。
根据本发明实施例,提供了一种数据缓存方法的实施例,需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
该方法实施例可以在包含存储器和处理器的电子装置或者类似的运算装置中执行。以运行在计算机终端上为例,计算机终端可以包括一个或多个处理器(处理器可以包括但不限于中央处理器(CPU)、图形处理器(GPU)、数字信号处理(DSP)芯片、微处理器(MCU)、可编程逻辑器件(FPGA)、神经网络处理器(NPU)、张量处理器(TPU)、人工智能(AI)类型处理器等的处理装置)和用于存储数据的存储器。可选地,上述计算机终端还可以包括用于通信功能的传输设备、输入输出设备以及显示设备。本领域普通技术人员可以理解,上述结构描述仅为示意,其并不对上述计算机终端的结构造成限定。例如,计算机终端还可包括比上述结构描述更多或者更少的组件,或者具有与上述结构描述不同的配置。
存储器可用于存储计算机程序,例如,应用软件的软件程序以及模块,如本发明实施例中的数据缓存方法对应的计算机程序,处理器通过运行存储在存储器内的计算机程序,从而执行各种功能应用以及数据处理,即实现上述的数据缓存方法。存储器可包括高速随机存储器,还可包括非易失性存储器,如一个或者多个磁性存储装置、闪存、或者其他非易失性固态存储器。在一些实例中,存储器可进一步包括相对于处理器远程设置的存储器,这些远程存储器可以通过网络连接至移动终端。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。
传输装置用于经由一个网络接收或者发送数据。上述的网络具体实例可包括移动终端的通信供应商提供的无线网络。在一个实例中,传输装置包括一个网络适配器(Network Interface Controller,简称为NIC),其可通过基站与其他网络设备相连从而可与互联网进行通讯。在一个实例中,传输装置可以为射频(Radio Frequency,简称为RF)模块,其用于通过无线方式与互联网进行通讯。
显示设备可以例如触摸屏式的液晶显示器(LCD)和触摸显示器(也被称为“触摸屏”或“触摸显示屏”)。该液晶显示器可使得用户能够与移动终端的用户界面进行交互。在一些实施例中,上述移动终端具有图形用户界面(GUI),用户可以通过触摸触敏表面上的手指接触和/或手势来与GUI进行人机交互,此处的人机交互功能可选的包括如下交互:创建网页、绘图、文字处理、制作电子文档、游戏、视频会议、即时通信、收发电子邮件、通话界面、播放数字视频、播放数字音乐和/或网络浏览等、用于执行上述人机交互功能的可执行指令被配置/存储在一个或多个处理器可执行的计算机程序产品或可读存储介质中。
在本实施例中提供了一种运行于上述计算机终端的数据缓存方法,图1是根据本发明其中一实施例的数据缓存方法的流程图,如图1所示,该流程包括如下步骤:
步骤S12,获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,多个缓存副本在缓存分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;
步骤S14,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,第一数据层、第二数据层、第三数据层、第四数据层分别对应的缓存数据访问频次依次降低。
上述步骤S12中,每个缓存副本可以为缓存数据库的存储层模块,对于一台物理机而言,每3个缓存副本为一组,每一组缓存副本存储在同一个缓存分片中。具体的可如图2所示。
图2是根据本发明其中一实施例的数据缓存系统的示意图。数据缓存系统属于分布式架构,主要包括负载均衡模块、分片服务器模块和缓存分片模块。
如图2所示,负载均衡模块,即用户访问的入口模块,起着负载均衡的作用;分片服务器模块,即分片路由模块,根据负载均衡模块的缓存请求进行查询,从而判定应该将待缓存数据路由至对应的缓存分片模块;缓存分片模块,根据待缓存数据的键值标识(Key)的哈希值将包括多个键值对:键值标识/属性值(Key/Value)的缓存数据副本存储在不同的缓存分片中,并且在一个缓存分片中有3个缓存副本,且这3个缓存副本为一组,组内会通过raft协议进行数据同步。
例如,缓存分片-1中包括缓存副本-1、缓存副本-2、缓存副本-3,缓存分片-2中包括缓存副本-4、缓存副本-5、缓存副本-6,缓存分片-3中包括缓存副本-7、缓存副本-8、缓存副本-9,并且每个缓存分片中的各个缓存副本之间利用raft协议进行数据同步,如缓存副本-N包括多个KeyN1/ValueN1、KeyN2/ValueN2、…、KeyNN/ValueNN。
上述步骤S14中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项。
图3是根据本发明其中一实施例的目标数据层的示意图,如图3所示。第一数据层表示访问频次最高的数据存放层,可以记为热层(Hot层),并且第一数据层对应的目标缓存区域为动态随机存取缓存区域(即,DRAM);第二数据层表示访问频次逐渐降低的数据存放层,可以记为温暖层(Warm层),并且第二数据层对应的目标缓存区域为持久内存缓存区域(Persistent Memory,PMEM);第三数据层表示数据访问频次更低的数据存放层,可以记为寒冷层(Cold层),并且第三数据层对应的目标缓存区域为非易失性缓存区域(Non-Volatile Memory Express,NVMe);第四数据层表示数据常态不被访问的数据存放层,可以记为冷冻层(Frozen层),并且第四数据层对应的目标缓存区域为分布式文件系统缓存区域(即,Distributed FS)。
对于初始访问缓存数据的请求,会对用户提供几类接口,包括增删改查类、信息查看类、节点操作类和数据驱逐类。图4是根据本发明其中一实施例的用户接口的示意图,如图4所示:
在增删改查类接口中,可通过包括查询指令(GET key)、插入指令(PUT key)、更新指令(UPDATE key)、删除指令(DELETE key)、数组查询指令(RANGE KEY1)、清空指令(CLEARALL)等对数据库中的键值对进行查询、增加、更新、删除、数组查询、清空等多个操作。例如,可通过GET key获取与Key对应的Value;可通过PUT key插入一对Key/Value;可通过UPDATEkey更新已有的Key对应的Value;可通过DELETE key删除已有的Key/Value;可通过RANGEKEY1,KEY2,…,KEYN获取多个Key对应的Value;可通过CLEAR ALL清空全部待缓存数据,例如全部的Key/Value。
在信息查看类接口中,可通过显示集群信息指令(SHOW CLUSTER INFO)、显示线程状态指令(SHOW THREAD STATUS)查看缓存分片的状态信息和各线程的状态信息。例如,可通过SHOW CLUSTER INFO查看每个缓存分片中每一层的缓存使用率、命中率、请求数及耗时等;可通过SHOW THREAD STATUS查看缓存数据库中当前进程中各线程的繁忙程度。
在节点操作类接口中,可通过增加副本指令(ADD REPLICA)、更换副本指令(REPLACE REPLICA)、切换副本指令(SWITCH REPLICA)在缓存分片中进行增加副本、替换副本、切换副本等操作。例如,可通过ADD REPLICA在缓存分片中新增缓存副本;可通过REPLACE REPLICA对已有的缓存副本进行替换;可通过SWITCH REPLICA在缓存分片中对缓存副本进行切换。
在数据驱逐类接口中,可通过向上驱逐指令(EVICTION UPPER)将缓存数据驱逐至访问频次更高的上一层;通过向下驱逐指令(EVICTION DOWNER)将缓存数据驱逐至访问频次更低的下一层。例如,可通过EVICTION UPPER强制驱逐Warm层的缓存数据到访问频次更高的Hot层;通过EVICTION DOWNER强制驱逐Hot层缓存数据到访问频次更低的Warm层。还可通过清空热层指令(CLEAR HOT)清空热层的缓存数据;通过清空温暖层指令(CLEAR WARM)清空温暖层的缓存数据;通过清空寒冷层指令(CLEAR COLD)清空寒冷层的缓存数据;通过清空冷冻层指令(CLEAR FROZEN)清空冷冻层的缓存数据。
通过设计不同类型的用户接口,可以对缓存数据进行包括查询、增加、删除、更新、清空等操作,同时能够快速查看每个缓存分片中的缓存使用率、命中率、请求数、耗时时间以及当前进程中各线程的繁忙程度,以及对缓存副本进行包括新增、替换及切换等操作,最后还可以对缓存数据进行包括驱逐至另一数据层及清空等操作,由此可以将缓存数据存储在不同数据层的数据缓存区域中,从而实现降低内存成本开销、提升缓存加载速率的技术效果。
基于上述步骤S12至S14,通过获取待缓存数据的数据访问频次,并将待缓存数据中包括多个键值对的多个缓存副本在缓存分片中采用目标协议进行数据同步,基于数据访问频次将待缓存数据中的每个缓存副本存储至访问频次不同的目标数据层对应的目标缓存区域,达到了将缓存数据进行多级存储的目的,从而实现了在缓存数据较多时降低内存开销成本、提升缓存加载速率的技术效果,进而解决了由于缓存数据较多而导致的内存成本开销大、缓存加载速率低的技术问题。
可选地,本申请实施例提供的数据缓存方法还包括:
步骤S131,获取数据访问频次与多个键值标识之间的映射关系信息,其中,多个键值标识按照时间顺序进行排列;
步骤S132,基于映射关系信息对多个键值标识对应的键值对进行缓存管理。
上述步骤是在用户首次插入数据时,在第一数据层中进行的操作,即在Hot层中进行的缓存操作。
具体的,上述数据访问频次与多个键值标识之间的映射关系信息表示Freq到Key的一对多的映射关系,即多个不同的Key可能存在相同的Freq,例如Key1、Key2、Key3存在相同的Freq1,因此Freq1对应的表中包含Key1、Key2、Key3。上述多个键值标识按照时间顺序进行排列表示每一个Freq对应的多个Key按照时间顺序进行排列,例如,Freq1对应的Key1、Key2、Key3的时间分别为2022年6月16日、2022年6月15日,2022年6月17日,将Key1、Key2、Key3按照时间先后顺序排列为Key2、Key1、Key3。
具体的,上述基于映射关系信息对多个键值标识对应的键值对进行缓存管理,包括快速查找并删除时间较早的Key和快速删除key列表中的任何一个Key。其中,可通过将多个Key按照时间顺序进行排列,对时间较早的Key进行快速的查找及删除。其中,快速删除key列表中的任何一个Key的过程为:当访问频次为Freq的某个Key被查询,则这个Key的访问频次会变为Freq+1,则说明这个Key从Freq对应的Key列表中移除,而加入到Freq+1对应的列表当中。
基于上述步骤S131和步骤S132,通过获取数据访问频次与按照时间顺序进行排列的多个键值标识之间的映射关系信息,并基于映射关系信息对多个键值标识对应的键值对进行缓存管理,可以快速查找并删除任一个键值标识,实现对缓存数据的高效管理。
图5是根据本发明其中一实施例的又一种数据缓存方法的示意图。如图5所示,访问频次1、访问频次2、访问频次3的访问频次依次增加,其中,访问频次1的访问频次最低,访问频次3的访问频次最高。访问频次1对应键值标识1、键值标识2、键值标识3,访问频次2对应键值标识4,访问频次3对应键值标识5、键值标识6。对于用户首次的插入请求,Key/Value首先会落到第一数据层,这一层的缓存数据全部存放在DRAM中。在第一数据层中进行缓存管理包括:确定Freq到Key的一对多的映射关系,根据此映射关系找到最小的Freq对应的Key,将找到的Key删除,因此能够快速得到当前最小的key对应的所有Freq,并引入变量访问频次1来记录当下最小的Freq;若频次为Freq的某个Key被访问,则其频次会变为Freq+1,则将这个Key从Freq对应的Key列表中移除,而加入到Freq+1对应的列表中。
可选地,在步骤S14,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:
步骤S141,响应于数据访问频次小于第一预设阈值,基于映射关系信息将多个键值标识对应的键值对从第一数据层对应的目标缓存区域转移至第二数据层对应的目标缓存区域。
具体的,上述第一数据层可以为Hot层,其对应的目标缓存区域可以为动态随机存取缓存区域DRAM,第二数据层可以为Warm层,其对应的目标缓存区域可以为持久内存缓存区域PMEM。由于第二数据层缓存的持久化,因此采用PMEM的devdax模式。使用PMEM的优势在于其高性能、非易失性、字节寻址能力强以及低延迟性,而且PMEM的速度介于DRAM以及NVMe之间,提供的容量能到几百GB甚至TB。
具体的,上述第一预设阈值可以用于衡量数据访问的频次,访问频次小于第一预设阈值的数据将被转移至第二数据层对应的目标缓存区域,例如,第一预设阈值为20次时,当访问频次Freq小于20次时,可基于Freq与Key1,Key2,…,KeyN的映射关系,将Key1,Key2,…,KeyN对应的Key1/Value1,Key2/Value2,…,KeyN/ValueN从Hot层对应的动态随机存取缓存区域转移至Warm层对应的持久内存缓存区域。其中,将键值对由Hot层转移到Warm层的过程包括:当Key的对应Freq降低到预设阈值后,会进入到一个双端队列存放,当双端队列长度超出预设长度后,Key/Value会被驱逐到Warm层对应的持久内存缓存区域PMEM中。
基于上述步骤S141,通过对比数据访问频次和第一预设阈值大小,能够将数据访问频次小于第一预设阈值的键值对从访问频次最高的第一数据层转移至访问频次降低的第二数据层,由此可将数据进行分层存储,实现了在缓存数据时,降低内存开销成本、提升缓存加载速率的技术效果。
图6是根据本发明其中一实施例的又一种数据缓存方法的示意图。如图6所示,当数据访问频次小于第一预设阈值时,将缓存数据从访问频次最高的第一数据层转移至访问频次降低的第二数据层。第二数据层的主要组成部分包括:第二数据层缓存数据(warmbuffer cache)、异步写日志缓冲缓存(Log async buffer)和日志文件(Log file),其中,当异步写日志缓冲缓存快写满时会触发写日志操作。缓存数据库中还存在一个缓存数据管理器做数据缓存的管理,其功能主要包括:对缓存数据库的配置进行初始化;对第二数据层对应的持久内存缓存区域中的PMEM模块的统计信息进行存储;检测硬件是否存在异常;对第二数据层对应的持久内存缓存区域中PMEM的内存页读写、刷新、分配等数据进行统计。在第二数据层中使用的是持久内存缓存区域PMEM的devdax模式,其中,devdax使用字符设备节点DAX提供持久化内存的访问,并且使用CPU缓存刷新和隔离指令可以使设备上的数据持久化。因此,第二数据层中的缓存数据不会因为掉电而丢失。
可选地,在步骤S14,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:
步骤S142,响应于数据访问频次小于第二预设阈值,利用空闲链表、刷新链表和最近最少使用置换链表将多个键值标识对应的属性值从第二数据层对应的目标缓存区域转移至第三数据层对应的目标缓存区域。
具体的,上述第二预设阈值可以用于衡量数据访问的频次,访问频次小于第二预设阈值的数据将被转移至第三数据层对应的目标缓存区域。例如,第二预设阈值为10次时,当访问频次Freq2小于10次时,可基于Freq2与Key21,Key22,…,Key2N的映射关系,将Key21,Key22,…,Key2N对应的Value21、Value22、…、Value2N从Warm层对应的持久内存缓存区域转移至Cold层对应的非易失性缓存区域,而将Key21,Key22,…,Key2N留在Warm层。对于Cold层中的Value21,Value22,…,Value2N,会以B+树的数据结构组织起来,增加树的每层节点的数量,由此降低树的高度,从而尽可能减少一定的磁盘I/O操作,其中B+树的叶子结点用于存储关键字以及相应记录的地址,叶子结点以上的各层作为索引使用,当索引部分中某个结点的关键字与所查的关键字相同时,并不停止查找,而是继续沿着这个关键字左边的指针向下,一直查到该关键字所在的叶子结点为止。
具体的,上述利用空闲(Idle)链表、刷新(Flush)链表和最近最少使用置换(LeastFrequently Used,LFU)链表将多个键值标识对应的属性值从第二数据层对应的目标缓存区域转移至第三数据层对应的目标缓存区域可如图7所示。
图7是根据本发明其中一实施例的又一种数据缓存方法的示意图。空闲链表用于存放空闲的缓存页的数据,如果这个缓存页被用到,则这个缓存页会从空闲链表中移除;刷新链表用于记录被修改后的新页,并且在一个后台线程中按照预设周期频率将这部分的缓存页转移至第三数据层中,随后将对应的缓存数据从空闲链表以及最近最少使用置换链表中移除,并且在空闲下来时释放出来的缓存页面会加入到空闲链表;对应加载的缓存页会存放在最近最少使用页面置换链表当中,最近未访问的缓存页会被换出。
基于上述步骤S142,通过对比数据访问频次和第二预设阈值大小,能够将数据访问频次小于第二预设阈值的键值对从访问频次降低的第二数据层转移至访问频次更低的第三数据层,由此可将数据进行分层存储,实现了在缓存数据时,降低内存开销成本、提升缓存加载速率的技术效果。
可选地,在步骤S14,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:
步骤S143,响应于数据访问频次小于第三预设阈值,基于映射关系信息将多个键值标识对应的属性值从第三数据层对应的目标缓存区域转移至第四数据层对应的目标缓存区域。
具体的,上述第三预设阈值可以用于衡量数据访问的频次,访问频次小于第三预设阈值的数据将被转移至第四数据层对应的目标缓存区域,例如,第三预设阈值为5次时,当访问频次Freq3小于5次时,可将缓存数据驱逐到Frozen层。对于Cold层中的缓存数据会进行以下操作:在Warm层额外维护一个Key/Value映射结构(map),存储对应Key/Value的访问频次,后台线程会按照预设周期频率(最小颗粒度为分钟级)去遍历此map,若map对应Key/Value的访问频次已经大于天级以上未访问到,则会被转移至Frozen层。
基于上述步骤S143,通过对比数据访问频次和第三预设阈值大小,能够将数据访问频次小于第三预设阈值的键值对从访问频次降低的第三数据层转移至访问频次更低的第四数据层,由此可将数据进行分层存储,实现了在缓存数据时,降低内存开销成本、提升缓存加载速率的技术效果。
可选地,在步骤S14中,本申请实施例的数据缓存方法还包括:
步骤S144,响应于数据访问频次小于第四预设阈值,基于映射关系信息将多个键值标识对应的属性值从第四数据层对应的目标缓存区域中进行删除。
具体的,上述第四预设阈值可以用于衡量数据访问的频次,访问频次小于第四预设阈值的数据将被转移至Frozen层对应的目标缓存区域NVMe,例如,第三预设阈值为1次时,当访问频次Freq4小于1次时,可将Frozen层中缓存数据永久删除。
基于上述步骤S144,通过对比数据访问频次和第四预设阈值大小,能够将数据访问频次小于第四预设阈值的缓存数据从第四数据层删除,不再额外占用整个缓存数据库的资源,从而能够节省缓存空间,减少内存成本开销。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例所述的方法。
在本实施例中还提供了一种数据缓存装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图8是根据本发明其中一实施例的一种数据缓存装置的结构框图,如图8所示,该数据缓存装置包括:获取模块801,用于获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,多个缓存副本在同一分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;存储模块802,用于基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,第一数据层、第二数据层、第三数据层、第四数据层分别对应的缓存数据访问频次依次降低。
可选地,获取模块801还用于:获取数据访问频次与多个键值标识之间的映射关系信息,其中,多个键值标识按照时间顺序进行排列;
可选地,存储模块802还用于:基于映射关系信息对多个键值标识对应的键值对进行缓存管理。
可选地,存储模块802还用于:基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:响应于数据访问频次小于第一预设阈值,基于映射关系信息将多个键值标识对应的键值对从第一数据层对应的目标缓存区域转移至第二数据层对应的目标缓存区域。
可选地,存储模块802还用于:基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:响应于数据访问频次小于第二预设阈值,利用空闲链表、刷新链表和最近最少使用置换链表将多个键值标识对应的属性值从第二数据层对应的目标缓存区域转移至第三数据层对应的目标缓存区域。
可选地,存储模块802还用于:基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域包括:响应于数据访问频次小于第三预设阈值,基于映射关系信息将多个键值标识对应的属性值从第三数据层对应的目标缓存区域转移至第四数据层对应的目标缓存区域。
可选地,存储模块802还用于:响应于数据访问频次小于第四预设阈值,基于映射关系信息将多个键值标识对应的属性值从第四数据层对应的目标缓存区域中进行删除。
可选地,第一数据层对应的目标缓存区域为动态随机存取缓存区域;第二数据层对应的目标缓存区域为持久内存缓存区域;第三数据层对应的目标缓存区域为非易失性缓存区域;第四数据层对应的目标缓存区域为分布式文件系统缓存区域。
需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。
本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。
可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:
步骤S1,获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,多个缓存副本在缓存分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;
步骤S2,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,第一数据层、第二数据层、第三数据层、第四数据层分别对应的缓存数据访问频次依次降低。
可选地,在本实施例中,上述存储介质可以包括但不限于:U盘、只读存储器(Read-Only Memory,简称为ROM)、随机存取存储器(Random Access Memory,简称为RAM)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。
本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。
可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。
可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:
步骤S1,获取待缓存数据的数据访问频次,其中,待缓存数据包括多个缓存副本,多个缓存副本在缓存分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;
步骤S2,基于数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,第一数据层、第二数据层、第三数据层、第四数据层分别对应的缓存数据访问频次依次降低。
可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
在本发明的上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
在本申请所提供的几个实施例中,应该理解到,所揭露的技术内容,可通过其它的方式实现。其中,以上所描述的装置实施例仅仅是示意性的,例如所述单元的划分,可以为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口,单元或模块的间接耦合或通信连接,可以是电性或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可为个人计算机、服务器或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (10)
1.一种数据缓存方法,其特征在于,包括:
获取待缓存数据的数据访问频次,其中,所述待缓存数据包括多个缓存副本,所述多个缓存副本在缓存分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;
基于所述数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,所述目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,所述第一数据层、所述第二数据层、所述第三数据层、所述第四数据层分别对应的所述缓存数据访问频次依次降低。
2.根据权利要求1所述的数据缓存方法,其特征在于,所述方法还包括:
获取所述数据访问频次与多个键值标识之间的映射关系信息,其中,所述多个键值标识按照时间顺序进行排列;
基于所述映射关系信息对所述多个键值标识对应的键值对进行缓存管理。
3.根据权利要求2所述的数据缓存方法,其特征在于,基于所述数据访问频次将每个缓存副本存储至所述目标数据层对应的所述目标缓存区域包括:
响应于所述数据访问频次小于第一预设阈值,基于所述映射关系信息将所述多个键值标识对应的键值对从所述第一数据层对应的所述目标缓存区域转移至所述第二数据层对应的所述目标缓存区域。
4.根据权利要求3所述的数据缓存方法,其特征在于,基于所述数据访问频次将每个缓存副本存储至所述目标数据层对应的所述目标缓存区域包括:
响应于所述数据访问频次小于第二预设阈值,利用空闲链表、刷新链表和最近最少使用置换链表将所述多个键值标识对应的属性值从所述第二数据层对应的所述目标缓存区域转移至所述第三数据层对应的所述目标缓存区域。
5.根据权利要求2所述的数据缓存方法,其特征在于,基于所述数据访问频次将每个缓存副本存储至所述目标数据层对应的所述目标缓存区域包括:
响应于所述数据访问频次小于第三预设阈值,基于所述映射关系信息将所述多个键值标识对应的属性值从所述第三数据层对应的所述目标缓存区域转移至所述第四数据层对应的所述目标缓存区域。
6.根据权利要求2所述的数据缓存方法,其特征在于,所述方法还包括:
响应于所述数据访问频次小于第四预设阈值,基于所述映射关系信息将所述多个键值标识对应的属性值从所述第四数据层对应的所述目标缓存区域中进行删除。
7.根据权利要求1所述的数据缓存方法,其特征在于,
所述第一数据层对应的所述目标缓存区域为动态随机存取缓存区域;
所述第二数据层对应的所述目标缓存区域为持久内存缓存区域;
所述第三数据层对应的所述目标缓存区域为非易失性缓存区域;
所述第四数据层对应的所述目标缓存区域为分布式文件系统缓存区域。
8.一种数据缓存装置,其特征在于,包括:
获取模块,用于获取待缓存数据的数据访问频次,其中,所述待缓存数据包括多个缓存副本,所述多个缓存副本在同一分片中采用目标协议进行数据同步,每个缓存副本包括多个键值对;
存储模块,用于基于所述数据访问频次将每个缓存副本存储至目标数据层对应的目标缓存区域,其中,所述目标数据层包括第一数据层、第二数据层、第三数据层、第四数据层中的任意一项,所述第一数据层、所述第二数据层、所述第三数据层、所述第四数据层分别对应的所述缓存数据访问频次依次降低。
9.一种非易失性存储介质,其特征在于,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行所述权利要求1至6任一项中所述的数据缓存方法。
10.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行所述权利要求1至6任一项中所述的数据缓存方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210738309.5A CN115168416A (zh) | 2022-06-27 | 2022-06-27 | 数据缓存方法、装置、存储介质及电子装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202210738309.5A CN115168416A (zh) | 2022-06-27 | 2022-06-27 | 数据缓存方法、装置、存储介质及电子装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN115168416A true CN115168416A (zh) | 2022-10-11 |
Family
ID=83488181
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202210738309.5A Pending CN115168416A (zh) | 2022-06-27 | 2022-06-27 | 数据缓存方法、装置、存储介质及电子装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115168416A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024113694A1 (zh) * | 2022-11-30 | 2024-06-06 | 苏州元脑智能科技有限公司 | 缓存数据处理方法、系统、装置、设备及计算机存储介质 |
-
2022
- 2022-06-27 CN CN202210738309.5A patent/CN115168416A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2024113694A1 (zh) * | 2022-11-30 | 2024-06-06 | 苏州元脑智能科技有限公司 | 缓存数据处理方法、系统、装置、设备及计算机存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10216629B2 (en) | Log-structured storage for data access | |
US11010300B2 (en) | Optimized record lookups | |
EP3170106B1 (en) | High throughput data modifications using blind update operations | |
US9965394B2 (en) | Selective compression in data storage systems | |
US9582421B1 (en) | Distributed multi-level caching for storage appliances | |
US10409728B2 (en) | File access predication using counter based eviction policies at the file and page level | |
US9772949B2 (en) | Apparatus, system and method for providing a persistent level-two cache | |
US20120072656A1 (en) | Multi-tier caching | |
CN109800185B (zh) | 一种数据存储系统中的数据缓存方法 | |
CN108140040A (zh) | 存储器中数据库的选择性数据压缩 | |
CN109804359A (zh) | 用于将数据回写到存储设备的系统和方法 | |
US20130290636A1 (en) | Managing memory | |
WO2020000492A1 (zh) | 一种存储碎片管理方法及终端 | |
US10289345B1 (en) | Contention and metadata write amplification reduction in log structured data storage mapping | |
US10210067B1 (en) | Space accounting in presence of data storage pre-mapper | |
CN112148736A (zh) | 缓存数据的方法、设备及存储介质 | |
CN115168416A (zh) | 数据缓存方法、装置、存储介质及电子装置 | |
KR101806394B1 (ko) | 모바일 dbms환경에서 트랜잭션에 특화된 색인 캐시의 구조를 갖는 데이터 처리 방법 | |
CN108664217A (zh) | 一种降低固态盘存储系统写性能抖动的缓存方法及系统 | |
CN116627345A (zh) | 应用于海量value键值对的高性能KV缓存方法及装置 | |
US10209909B1 (en) | Storage element cloning in presence of data storage pre-mapper | |
KR101419428B1 (ko) | 모바일 환경에 구축된 데이터베이스에 대한 트랜잭션 로깅 및 회복 장치 및 그 방법 | |
Guo et al. | Re-enabling high-speed caching for LSM-trees | |
US9846553B2 (en) | Organization and management of key-value stores | |
CN117539915B (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 |