数据存储方法、装置及存储介质与流程

文档序号:15980444发布日期:2018-11-17 00:16阅读:183来源:国知局

本发明涉及数据存储技术,尤其涉及一种数据存储方法、装置及存储介质。



背景技术:

随着互联网的高速发展,数据量呈现爆发式增涨,承载业务数据的后端存储面临着更高的挑战,尤其是支撑高吞吐业务的KV缓存系统,在海量数据存储的场景下,内存成本大幅增加。为了解决KV缓存系统的存储成本问题,通常可以采用内存结合磁盘存储的KV缓存系统。

在现有技术中,R2M是常用的内存结合磁盘存储数据的方式,R2M是基于键值key的最近访问频率(Least Frequently Used;LFU)的热度统计算法识别出数据的状态为热数据状态,其中,内存中将存储上述数据,并将无访问或访问次数少的处于冷数据状态的数据存储到硬盘。

然而,在R2M中,判断数据状态的标准较为简单,会造成冷数据状态和热数据状态判断不准确,从而使得系统读取磁盘的概率增大,导致系统稳定性不好。



技术实现要素:

为解决现有技术中存在的问题,本发明提供一种数据存储方法、装置及存储介质,以减少读取磁盘的概率,提高系统的稳定性。

第一方面,本发明实施例提供一种数据存储方法,包括:

接收客户端发送的数据存储请求,所述数据存储请求中包括待存储数据;

根据所述待存储数据的最近访问频率LFU和最近访问次数LRU,确定所述待存储数据的状态,所述状态为冷数据状态或热数据状态;

根据所述待存储数据的状态,确定所述待存储数据对应的存储介质,并将所述待存储数据存储至所述存储介质中。

可选的,所述根据所述待存储数据的最近访问频率LFU和最近访问次数LRU,确定所述待存储数据的状态,包括:

若所述待存储数据的LFU大于第一预设阈值,且所述LRU大于第二预设阈值,则确定所述待存储数据的状态为热数据状态,否则,确定所述待存储数据的状态为冷数据状态。

可选的,所述根据所述待存储数据的最近访问频率LFU和最近访问次数LRU,确定所述待存储数据的状态之后,还包括:

根据所述待存储数据的长度信息,更新所述待存储数据的状态。

可选的,所述根据所述待存储数据的长度信息,更新所述待存储数据的状态,包括:

若所述长度信息小于第三预设阈值,则确定所述待存储数据的状态为热数据状态,否则,确定所述待存储数据的状态为冷数据状态。

可选的,所述方法还包括:

确定所述待存储数据的key值的状态,所述状态为冷数据状态或热数据状态;

根据所述待存储数据的key值的状态,确定所述待存储数据的key值的存储介质,并将所述待存储数据的key值存储至所述存储介质中。

可选的,所述将所述待存储数据存储至所述存储介质中,包括:

将所述待存储数据进行压缩,并将压缩后的所述待存储数据存储至所述存储介质中。

可选的,所述将所述待存储数据存储至所述存储介质中,包括:

根据所述待存储数据的值,对所述待存储数据进行排序,并将排序后的所述待存储数据存储至所述存储介质中。

可选的,所述根据所述待存储数据的状态,确定所述待存储数据对应的存储介质,包括:

若所述待存储数据的状态为热数据状态,则确定所述待存储数据对应的存储介质为内存;

若所述待存储数据的状态为冷数据状态,则确定所述待存储数据对应的存储介质为磁盘。

可选的,所述方法还包括:

根据内存占用量、内存与磁盘存储的数据比例中的至少一种,来确定内存和磁盘的数据存储比例;

根据所述数据存储比例确定所述第一预设阈值和所述第二预设阈值。

第二方面,本发明实施例提供一种数据存储装置,包括:

接收模块,用于接收客户端发送的数据存储请求,所述数据存储请求中包括待存储数据;

确定模块,用于根据所述待存储数据的最近访问频率LFU和最近访问次数LRU,确定所述待存储数据的状态,所述状态为冷数据状态或热数据状态;

所述确定模块,还用于根据所述待存储数据的状态,确定所述待存储数据对应的存储介质;

存储模块,用于将所述待存储数据存储至所述存储介质中。

可选的,所述确定模块,具体用于:

若所述待存储数据的LFU大于第一预设阈值,且所述LRU大于第二预设阈值,则确定所述待存储数据的状态为热数据状态,否则,确定所述待存储数据的状态为冷数据状态。

可选的,所述装置还包括:

更新模块,用于根据所述待存储数据的长度信息,更新所述待存储数据的状态。

可选的,所述更新模块,具体用于:

若所述长度信息小于第三预设阈值,则确定所述待存储数据的状态为热数据状态,否则,确定所述待存储数据的状态为冷数据状态。

可选的,所述确定模块,还用于确定所述待存储数据的key值的状态,所述状态为冷数据状态或热数据状态;

所述确定模块,还用于根据所述待存储数据的key值的状态,确定所述待存储数据的key值的存储介质;

所述存储模块,还用于将所述待存储数据的key值存储至所述存储介质中。

可选的,所述存储模块,具体用于:

将所述待存储数据进行压缩,并将压缩后的所述待存储数据存储至所述存储介质中。

可选的,所述存储模块,具体用于:

根据所述待存储数据的值,对所述待存储数据进行排序,并将排序后的所述待存储数据存储至所述存储介质中。

可选的,所述确定模块,具体用于:

若所述待存储数据的状态为热数据状态,则确定所述待存储数据对应的存储介质为内存;

若所述待存储数据的状态为冷数据状态,则确定所述待存储数据对应的存储介质为磁盘。

可选的,所述确定模块,还用于根据内存占用量、内存与磁盘存储的数据比例中的至少一种,确定内存和磁盘的数据存储比例;

所述确定模块,还用于根据所述数据存储比例确定所述第一预设阈值和所述第二预设阈值。

第三方面,本发明实施例提供一种服务器,包括:

处理器;

存储器;以及

计算机程序;

其中,所述计算机程序被存储在所述存储器中,并且被配置为由所述处理器执行,所述计算机程序包括用于执行如第一方面所述的方法的指令。

第四方面,本发明实施例提供一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行第一方面所述的方法。

本发明提供的数据存储方法、装置及存储介质,通过接收客户端发送的数据存储请求,该数据存储请求中包括待存储数据,并根据待存储数据的最近访问频率LFU和最近访问次数LRU,确定待存储数据的状态,该状态为冷数据状态或热数据状态,然后根据待存储数据的状态,确定待存储数据对应的存储介质,并将待存储数据存储至存储介质中。由于根据待存储数据的LFU和LRU,判断待存储数据的状态,从而可以提高数据的状态判断的准确性,减少系统读取磁盘的概率,进而可以提高系统的稳定性。

附图说明

为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。

图1为应用本发明实施例提供的数据存储方法的架构示意图;

图2为本发明实施例提供的数据存储方法的系统架构示意图;

图3为本发明实施例提供的数据存储方法实施例一的流程示意图;

图4为本发明实施例提供的数据存储装置实施例一的结构示意图;

图5为本发明实施例提供的数据存储装置实施例二的结构示意图;

图6A示出了本发明服务器的一种可能的结构示意图;

图6B示出了本发明服务器的另一种可能的结构示意图。

具体实施方式

下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”、“第三”及“第四”等(如果存在)是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本发明的实施例能够以除了在这里图示或描述的那些以外的顺序实施。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

图1为应用本发明实施例提供的数据存储方法的架构示意图,如图1所示,该系统架构中可以包括客户端101、102或103和服务器104。

其中,客户端101、102或103可以为支持信息通信的各种电子设备,包括但不限于智能手机、平板电脑、便携式计算机和台式计算机等。其中,客户端101、102或103可以使用Redis协议访问数据,并兼容全部Redis应用程序编程接口(application programming interface;API)。

服务器104可以完成对待存储数据的存储,例如对键key和值value的存储。其中,服务器104在接收到客户端101、102或103发送的数据存储请求时,在写数据的场景下,本申请中支持先写内存,然后根据最近访问频率(least frequency used;LFU)和最近访问次数(least recently used;LRU)将数据存储到对应的存储介质,进一步地,还可以同时根据LFU、LRU和数据长度将数据存储到对应的存储介质,另外,也支持直接将数据写入存储介质中。在读数据场景下,可以根据内存索引标记直接从内存或磁盘中读数据。

需要进行说明的是,本发明实施例中所提供的数据存储方法可以由图1中所示的服务器104来执行。

另外,值得注意的是,上述图1中所示的客户端、网络和服务器的数量和类型仅作为示意,在实际应用中,根据实现的需要,可以具有任意数量和类型的客户端、网络和服务器。

图2为本发明实施例提供的数据存储方法的系统架构示意图,如图2所示,客户端通过网络协议Redis应用程序编程接口(application programming interface;API)访问服务器,服务器中的服务层将处于热数据状态的待存储数据存储至内存中,RockDB存储引擎将处于冷数据状态的待存储数据存储至磁盘中。另外,冷热数据转换引擎将由热数据状态转换为冷数据状态的数据由内存转存至磁盘中,将由冷数据状态转换为热数据状态的数据由磁盘转存至内存中。

进一步地,内存中的key索引信息按照B+树进行组织,可以将处于冷数据状态的key索引信息存储至磁盘中,也可以将长度信息大于预设值的key索引信息存储至磁盘中,从而可以节省内存的存储空间。

另外,兼容原Redis的数据持久化方式:AOF和RDB,主从同步依赖RDB+增量操作。由于主从复制效率接近原生Redis,因此,可以使得主从复制效率更高。

对于升级Redis快照方案,本发明实施例中将串行改为并行,提高主从复制的效率。另外,在对Redis业务进行升级时,可以采用替换二进制的方式,因此,可以大大降低Redis业务的升级成本,而且还可以兼容原有的Redis服务运维方案和监控方案。

在图1和图2所示的架构示意图的基础上,本发明实施例提供的数据存储方法应用于对键key和值value进行存储的场景中。在现有技术中,在采用内存结合磁盘进行数据存储时,通常是基于键key的最近访问频率(Least Frequently Used;LFU)的热度统计算法识别出值value的状态为热数据状态,其中,内存中将存储上述数据,并将无访问或访问次数少的处于冷数据状态的数据存储到硬盘。这样,由于判断数据状态的标准较为简单,会造成冷数据状态和热数据状态判断不准确,从而使得系统读取磁盘的概率增大,导致系统稳定性不好。

本发明实施例考虑到上述问题,提出一种数据存储方法,通过接收客户端发送的数据存储请求,该数据存储请求中包括待存储数据,并根据待存储数据的最近访问频率LFU和最近访问次数LRU,确定待存储数据的状态,该状态为冷数据状态或热数据状态,然后根据待存储数据的状态,确定待存储数据对应的存储介质,并将待存储数据存储至存储介质中。由于根据待存储数据的LFU和LRU,判断待存储数据的状态,从而可以提高数据的状态判断的准确性,减少系统读取磁盘的概率,进而可以提高系统的稳定性。

下面以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。

在图1和图2所示的架构示意图的基础上,图3为本发明实施例提供的数据存储方法实施例一的流程示意图。本发明实施例提供了一种数据存储方法,该方法可以由任意执行数据存储方法的装置来执行,该装置可以通过软件和/或硬件实现。本实施例中,该装置可以集成在服务器中。如图3所示,本实施例的方法可以包括:

步骤301、接收客户端发送的数据存储请求,该数据存储请求中包括待存储数据。

在本实施例中,Redis客户端可以使用Redis协议访问数据,即通过Redis协议向服务器发送数据存储请求。由于客户端使用Redis协议访问数据,这样可以兼容全部Redis API。

客户端有数据需要存储时,会向服务器发送数据存储请求,该数据存储请求中包括有待存储数据。其中,在一种可能的实现方式中,待存储数据包括key和value。

另外,当客户端使用Redis API向服务器发送数据访问请求时,服务器将接收并处理该数据访问请求,在查找到相应的数据后,将返回遵循Redis协议的数据。

步骤302、根据待存储数据的LFU和LRU,确定待存储数据的状态,该状态为冷数据状态或热数据状态。

在本实施例中,服务器在接收到客户端发送的待存储数据后,将会判断待存储数据的LFU和LRU,以此确定出待存储数据的状态,即确定待存储数据为热数据状态还是冷数据状态。其中,热数据状态表示待存储数据为系统使用频率较高且访问频率较高的数据,冷数据状态表示待存储数据为系统使用频率较低且访问频率较低的数据。

在一种可能的实现方式中,根据待存储数据的LFU和LRU,确定待存储数据的状态,可以通过如下方法确定:若待存储数据的LFU大于第一预设阈值,且LRU大于第二预设阈值,则确定待存储数据的状态为热数据状态,否则,确定待存储数据的状态为冷数据状态。

具体的,LFU用于表示待存储数据在时间周期内的访问频率,LRU用于表示待存储数据在时间周期内的访问次数。在服务器确定出待存储数据的LFU大于第一预设阈值,且LRU大于第二预设阈值时,说明该待存储数据在时间周期内的访问频率较高,且该待存储数据在时间周期内的访问次数较高,此时,可以确定待存储数据的状态为热数据状态。

在服务器确定出待存储数据的LFU不大于第一预设阈值,且LRU不大于第二预设阈值时,说明该待存储数据在时间周期内的访问频率较低,且该待存储数据在时间周期内的访问次数较低,此时,可以确定待存储数据的状态为冷数据状态。

由于通过判断待存储数据的LFU是否大于第一预设阈值,且LRU是否大于第二预设阈值,从而确定待存储数据为热数据状态还是冷数据状态,由于本发明中是通过判断采样周期内的LFU和LRU的值来确定数据的状态,这种确定方式与现有技术中仅通过判断全局的LFU来确定数据的状态的方式相比,其平滑操作能够规避性能抖动问题,而且结合了LRU,不仅使数据预热更快,而且可以提高数据状态判断的准确性。

另外,第一预设阈值和第二预设阈值可以根据经验或者实际情况进行设置,对于第一预设阈值和第二预设阈值的具体取值,本发明实施例在此不做限制。

可选的,在具体的实现过程中,为了在运行过程中可以实时调整内存和磁盘的数据存储比例,可以根据内存占用量、内存与磁盘存储的数据比例中的至少一种,确定内存和磁盘的数据存储比例,并根据数据存储比例确定第一预设阈值和第二预设阈值。

具体的,服务器可以根据内存占用量、内存与磁盘存储的数据比例中的至少一种,确定内存和磁盘的数据存储比例,进而调整第一预设阈值和第二预设阈值的具体取值。例如:当内存占用量超过预设值后,服务器会调整将大部分数据存储至磁盘中,将小部分数据存储至内存中,此时,服务器可以增大第一预设阈值和第二预设阈值的具体取值。又例如:当内存与磁盘存储的数据比例过大,即内存中存储了较多的数据,而磁盘中存储了较少的数据时,服务器可以增大第一预设阈值和第二预设阈值的具体取值,以使后续的待存储数据中的大多数数据存储至磁盘中。

由于可以根据内存占用量、内存与磁盘存储的数据比例中的至少一种,实时调整第一预设阈值和第二预设阈值的具体取值,由此可以灵活配置磁盘和内存的容量比。

进一步地,在根据待存储数据的LFU和LRU,确定待存储数据的状态之后,服务器还可以根据待存储数据的长度信息,更新待存储数据的状态。

具体的,若长度信息小于第三预设阈值,则确定待存储数据的状态为热数据状态,否则,确定待存储数据的状态为冷数据状态。

服务器在确定待存储数据的状态时,除了考虑LFU和LRU之外,还需要考虑待存储数据的长度信息,例如:在待存储数据的LFU大于第一预设阈值、LRU大于第二预设阈值,且待存储数据的长度信息小于第三预设阈值时,确定待存储数据的状态为热数据状态,否则,可以确定待存储数据的状态为冷数据状态。

由于在确定待存储数据的状态时,将根据待存储数据的LFU、LRU和长度信息共同确定,这样,可以避免将长度较长的待存储数据确定为热数据,进而将长度较长的热数据存储在内存中的现象,由此可以节省内存的存储空间。

步骤303、根据待存储数据的状态,确定待存储数据对应的存储介质,并将待存储数据存储至存储介质中。

在本实施例中,服务器在确定出待存储数据的状态之后,可以根据确定出的待存储数据的状态确定对应的存储介质。

在一种可能的实现方式中,若待存储数据的状态为热数据状态,则确定待存储数据对应的存储介质为内存,若待存储数据的状态为冷数据状态,则确定待存储数据对应的存储介质为磁盘。

具体的,若待存储数据的状态为热数据状态,则说明该待存储数据的访问频率和访问次数较高,则可以将该待存储数据存储在内存中,这样,服务器在访问数据时,将可以直接从内存中读取数据。

若待存储数据的状态为冷数据状态,则说明该待存储数据的访问频率和访问次数较低,则可以将该待存储数据存储在磁盘中,这样,服务器在访问数据时,将可以直接从磁盘中读取数据。

由于将处于热数据状态的待存储数据存储在内存中,将处于冷数据状态的待存储数据存储在磁盘中,这样,可以避免系统频繁访问磁盘的现象,从而可以在提供大容量吞吐的同时,还可以提供高吞吐和低时延的数据访问。

进一步地,将待存储数据存储至对应的存储介质中之后,在预设时间段之后,服务器将会判断该待存储数据的状态是否发生变化,如是否由热数据状态变为冷数据状态,或者由冷数据状态变为热数据状态。若确定出待存储数据的状态发生了变化,则服务器将需要重新确定存储介质。

举例来说,若待存储数据由热数据状态变为冷数据状态,则服务器会将该待存储数据由内存转存到磁盘中,若待存储数据由冷数据状态变为热数据状态,则服务器会将该待存储数据由磁盘转存到内存中。

进一步地,服务器中的冷热数据转化引擎将处于冷数据状态的待存储数据从内存中转存到磁盘中时,可以根据数据特征,如根据访问次数和/或数据长度等,确定将数据存储到哪种存储介质中,如存储到串行高级技术附件(Serial Advanced Technology Attachment,SATA)、固态硬盘(Solid State Drives;SSD)或(Non-Volatile Memory express;NVME)。由于可以选择多种磁盘存储介质,这样可以针对不同的数据分别进行存储,由此可以提高系统的性价比。

另外,在现有技术中,通常只是将value采用内存结合磁盘的方式进行存储,而将key全部存储在内存中,这样,当key的数量较多或者key的长度较长时,就会造成内存空间的占用率较高。

为了解决这一问题,在本发明实施例中,对于key,也会根据LRU和LFU确定key值的状态,即确定key的状态为冷数据状态或热数据状态,并根据待存储数据的key值的状态,确定待存储数据的key值的存储介质,并将待存储数据的key值存储至存储介质中。

具体的,内存中的key按照B+树进行组织,对每个key按照分段HASH的规则分割成多段,以每一段的HASH值作为B+树各层的节点值,B+树叶子节点为对应的值的描述,服务器中的冷热数据转化引擎会将处于冷数据状态的key存储在磁盘中,即将不经常访问的索引信息按照page刷到磁盘上。另外,对key的组织也可以选择内存HASH的模式,即全部key的信息放在内存。

另外,在key的长度信息大于预设值的场景下,也可以选择使用B+树组织key索引,即将长度较长的key存储到磁盘内,从而可以节省key所占用的空间。

需要进行说明的是,本实施例中的key索引维护可以支持多样化辅助索引,提供高性能全数据/局部数据扫描(如hgetall,lrange等)和数据排序(如zrange,zscore等)操作。

进一步地,服务器在确定出待存储数据对应的存储介质之后,会将待存储数据存储至存储介质中。其中,在一种可能的实现方式中,服务器在存储待存储数据时,可以将待存储数据进行压缩,并将压缩后的待存储数据存储至存储介质中。

具体的,服务器在存储待存储数据时,可以先对待存储数据进行压缩,如对key和value都先进行压缩处理,再将压缩后的key和value存储至存储介质中,这样,可以提高存储介质中待存储数据的存储密度,降低了磁盘的存储量,降低读放大带来的性能影响,保障了性能的稳定性。

在另一种可能的实现方式中,服务器在存储待存储数据时,还可以根据待存储数据的键/值,对待存储数据进行聚合和排序,并将聚合和排序后的待存储数据存储至存储介质中。

具体的,服务器在存储待存储数据时,可以先根据待存储数据的键/值,对待存储数据进行聚合和排序,如对key和value进行聚合和排序处理,再将聚合和排序后的key和value存储至存储介质中,这样,可以减少系统访问磁盘的次数,尽可能降低磁盘读放大问题,提高系统的稳定性。

需要进行说明的是,服务器在进行数据存储时,可以支持同步磁盘存储和异步磁盘存储两种模式,其中,同步磁盘存储是直接将数据写入磁盘中,并记录其key的索引;异步磁盘存储是先将数据写入到内存中,后台异步将数据转存到磁盘中。

另外,在将待存储数据存储至存储介质中之后,服务器会针对内存中保存的数据和磁盘中保存的数据建立映射关系,并将映射关系保存在key对应的索引信息中,当客户端访问的key对应的value值存储在磁盘时,先利用key读取保存的映射关系,然后再从磁盘中读取真正的数据。

本发明实施例提供的数据存储方法,通过接收客户端发送的数据存储请求,该数据存储请求中包括待存储数据,并根据待存储数据的最近访问频率LFU和最近访问次数LRU,确定待存储数据的状态,该状态为冷数据状态或热数据状态,然后根据待存储数据的状态,确定待存储数据对应的存储介质,并将待存储数据存储至存储介质中。由于根据待存储数据的LFU和LRU,判断待存储数据的状态,从而可以提高数据的状态判断的准确性,减少系统读取磁盘的概率,进而可以提高系统的稳定性。

图4为本发明实施例提供的数据存储装置实施例一的结构示意图。该数据存储装置可以为独立的服务器,也可以为集成在服务器中的装置,该装置可以通过软件、硬件或者软硬件结合的方式实现。如图4所示,该装置包括:

接收模块11用于接收客户端发送的数据存储请求,所述数据存储请求中包括待存储数据;

确定模块12用于根据所述待存储数据的最近访问频率LFU和最近访问次数LRU,确定所述待存储数据的状态,所述状态为冷数据状态或热数据状态;

所述确定模块12还用于根据所述待存储数据的状态,确定所述待存储数据对应的存储介质;

存储模块13用于将所述待存储数据存储至所述存储介质中。

本发明实施例提供的数据查询装置,接收模块11通过接收客户端发送的数据存储请求,该数据存储请求中包括待存储数据,确定模块12根据待存储数据的最近访问频率LFU和最近访问次数LRU,确定待存储数据的状态,该状态为冷数据状态或热数据状态,然后确定模块12根据待存储数据的状态,确定待存储数据对应的存储介质,存储模块13将待存储数据存储至存储介质中。由于根据待存储数据的LFU和LRU,判断待存储数据的状态,从而可以提高数据的状态判断的准确性,减少系统读取磁盘的概率,进而可以提高系统的稳定性。

可选的,所述确定模块12具体用于:

若所述待存储数据的LFU大于第一预设阈值,且所述LRU大于第二预设阈值,则确定所述待存储数据的状态为热数据状态,否则,确定所述待存储数据的状态为冷数据状态。

图5为本发明实施例提供的数据存储装置实施例二的结构示意图。在图4所示装置的基础上,该装置还包括更新模块14。

更新模块14用于根据所述待存储数据的长度信息,更新所述待存储数据的状态。

可选的,所述更新模块14具体用于:

若所述长度信息小于第三预设阈值,则确定所述待存储数据的状态为热数据状态,否则,确定所述待存储数据的状态为冷数据状态。

可选的,所述确定模块12还用于确定所述待存储数据的key值的状态,所述状态为冷数据状态或热数据状态;

所述确定模块12还用于根据所述待存储数据的key值的状态,确定所述待存储数据的key值的存储介质;

所述存储模块13还用于将所述待存储数据的key值存储至所述存储介质中。

可选的,所述存储模块13具体用于:

将所述待存储数据进行压缩,并将压缩后的所述待存储数据存储至所述存储介质中。

可选的,所述存储模块13具体用于:

根据所述待存储数据的值,对所述待存储数据进行排序,并将排序后的所述待存储数据存储至所述存储介质中。

可选的,所述确定模块12具体用于:

若所述待存储数据的状态为热数据状态,则确定所述待存储数据对应的存储介质为内存;

若所述待存储数据的状态为冷数据状态,则确定所述待存储数据对应的存储介质为磁盘。

可选的,所述确定模块12还用于根据内存占用量、内存与磁盘存储的数据比例中的至少一种,确定内存和磁盘的数据存储比例;

所述确定模块12还用于根据所述数据存储比例确定所述第一预设阈值和所述第二预设阈值。

本发明实施例提供的数据存储装置,可以执行上述对应方法实施例,其实现原理和技术效果类似,在此不再赘述。

图6A示出了本发明服务器的一种可能的结构示意图。服务器600包括:处理单元602和通信单元603。处理单元602用于对服务器600的动作进行控制管理,例如,处理单元602用于支持服务器600执行图3的步骤302和303,和/或用于本发明所描述的技术的其它过程。通信单元603用于支持服务器600与其它网络实体的通信,例如与图1中示出的客户端之间的通信。服务器600还可以包括存储单元601,用于存储服务器600的计算机程序代码和数据。

其中,处理单元602可以是处理器或控制器,例如可以是CPU,通用处理器,数字信号处理器(DigitalSignalProcessor,DSP),专用集成电路(Application-Specific Integrated Circuit,ASIC),现场可编程门阵列(Field Programmable Gate Array,FPGA)或者其他可编程逻辑器件、晶体管逻辑器件、硬件部件或者其任意组合。其可以实现或执行结合本发明公开内容所描述的各种示例性的逻辑方框,模块和电路。所述处理器也可以是实现计算功能的组合,例如包含一个或多个微处理器组合,DSP和微处理器的组合等等。通信单元603可以是通信接口、收发器、收发电路等,其中,通信接口是统称,可以包括一个或多个接口。存储单元601可以是存储器。

当处理单元602为处理器,通信单元603为通信接口,存储单元601为存储器时,本发明所涉及的服务器可以为图6B所示的服务器。

参阅图6B所示,该服务器610包括:处理器612、通信接口613、存储器611。可选的,服务器610还可以包括总线614。其中,通信接口613、处理器612以及存储器611可以通过总线614相互连接;总线614可以是外设部件互连标准(PeripheralComponentInterconnect,简称PCI)总线或扩展工业标准结构(ExtendedIndustryStandardArchitecture,简称EISA)总线等。所述总线614可以分为地址总线、数据总线、控制总线等。为便于表示,图6B中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。

另外,存储器611中存储有计算机程序,并且被配置为由处理器612执行,该计算机程序包括用于执行如上图3所示实施例所述的方法的指令。

本发明实施例还提供一种计算机可读存储介质,其中,计算机可读存储介质存储有计算机程序,所述计算机程序使得服务器执行前述图3所示实施例提供的数据存储方法。其中,上述可读存储介质可以是由任何类型的易失性或非易失性存储设备或者它们的组合实现,如静态随机存取存储器(SRAM),电可擦除可编程只读存储器(EEPROM),可擦除可编程只读存储器(EPROM),可编程只读存储器(PROM),只读存储器(ROM),磁存储器,快闪存储器,磁盘或光盘。

本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:ROM、RAM、磁碟或者光盘等各种可以存储程序代码的介质。

最后应说明的是:以上各实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述各实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1