CN110321367B - 一种数据存储方法、数据查询方法及相关装置、电子设备 - Google Patents

一种数据存储方法、数据查询方法及相关装置、电子设备 Download PDF

Info

Publication number
CN110321367B
CN110321367B CN201910573663.5A CN201910573663A CN110321367B CN 110321367 B CN110321367 B CN 110321367B CN 201910573663 A CN201910573663 A CN 201910573663A CN 110321367 B CN110321367 B CN 110321367B
Authority
CN
China
Prior art keywords
stored
key
value
meta information
memory
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
Application number
CN201910573663.5A
Other languages
English (en)
Other versions
CN110321367A (zh
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.)
Beijing QIYI Century Science and Technology Co Ltd
Original Assignee
Beijing QIYI Century Science and 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 Beijing QIYI Century Science and Technology Co Ltd filed Critical Beijing QIYI Century Science and Technology Co Ltd
Priority to CN201910573663.5A priority Critical patent/CN110321367B/zh
Publication of CN110321367A publication Critical patent/CN110321367A/zh
Application granted granted Critical
Publication of CN110321367B publication Critical patent/CN110321367B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2455Query execution
    • G06F16/24552Database cache management

Landscapes

  • Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Computational Linguistics (AREA)
  • Data Mining & Analysis (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明实施例提供了一种数据存储方法、数据查询方法及相关装置、电子设备。将键值对存入缓存时,获取待存储键值对的待存储键和待存储值;将待存储值存储至本地***内存;获取存储后的待存储值的元信息;将待存储键与元信息对应存储至应用内存。查询缓存中的键值对时,获取待查询键;在应用内存中查询与待查询键对应存储的元信息,该元信息为待查询键对应的值的元信息;在本地***内存中获取元信息表示的已存储值,作为待查询键对应的值。

Description

一种数据存储方法、数据查询方法及相关装置、电子设备
技术领域
本发明涉及存储与查询技术领域,特别是涉及一种数据存储方法、数据查询方法及相关装置、电子设备。
背景技术
在分布式***中,有大量的数据存储与查询需要依靠缓存。
当以应用内存作为缓存时,缓存与应用程序共用一个内存,应用程序查询缓存时无需通过网络IO,并且由于应用程序与缓存距离很近,因而查询速率较高。但是,应用内存作为***内存中划分出来的特定存储区域,其存储空间较小,一旦缓存数据规模增大,便会侵占应用程序运行所需要的内存空间,导致应用程序的运行速率下降,甚至造成应用程序崩溃。
如果以***内存作为缓存,虽然可以存储大规模的缓存数据,且不会影响应用程序的运行速率,但将缓存数据存储于***内存中,会使得应用程序与缓存的距离变远,降低了缓存查询速率。
发明内容
本发明实施例的目的在于提供一种数据存储方法、数据查询方法及相关装置、电子设备,以实现在不降低查询速率的同时,减少缓存对应用程序性能的不利影响。具体技术方案如下:
为达到上述目的,本发明实施例提供了一种数据存储方法,包括:
获取待存储键值对的待存储键和待存储值;
将所述待存储值存储至本地***内存;
获取存储后的所述待存储值的元信息;
将所述待存储键与所述元信息对应存储至应用内存。
进一步的,所述将所述待存储键与所述元信息对应存储至应用内存的步骤,包括:
根据散列算法,计算所述待存储键在应用内存中的散列桶中的存储位置;
将所述待存储键和所述元信息存储至所述存储位置。
进一步的,在所述将所述待存储值存储至本地***内存的步骤之前,所述方法还包括:
将所述待存储值序列化为二进制流,并获取序列化方式信息,作为所述待存储值的元信息的一部分;
所述将所述待存储值存储至本地***内存,包括:
将对所述待存储值序列化后得到的二进制流存储至本地***内存。
进一步的,所述方法还包括:
当需要针对已存储键值对的已存储值进行更新时,在应用内存中获取与所述已存储键值对的已存储键对应的元信息,作为原元信息;
将本地***内存中所述原元信息表示的已存储值,更新为更新后值,并获取所述更新后值的新元信息;
将应用内存中的所述原元信息变更为所述新元信息。
进一步的,所述元信息包括所述待存储值在所述本地***内存中的存储地址。
本发明实施例提供了一种数据查询方法,包括:
获取待查询键;
在应用内存中查询与所述待查询键对应存储的元信息,所述元信息为所述待查询键对应的值的元信息;
在本地***内存中获取所述元信息表示的已存储值,作为所述待查询键对应的值。
进一步的,所述待查询键存储在所述应用内存中的散列桶中;
所述在应用内存中查询与所述待查询键对应存储的元信息的步骤,包括:
根据散列算法,计算所述待查询键在应用内存中的散列桶中的存储位置;
从所述存储位置获取元信息,作为与所述待查询键对应存储的元信息。
进一步的,所述元信息中包括所述待查询键对应的值被序列化为二进制流的序列化方式信息;
在所述在本地***内存中获取所述元信息表示的已存储值之后,还包括:
从所述元信息中获取所述序列化方式信息;
使用所述序列化方式信息,对所述待查询键对应的值进行反序列化。
进一步的,所述元信息包括所述待查询键对应的值在所述本地***内存中的存储地址。
本发明实施例还提供了一种数据存储装置,包括:
第一获取模块,用于获取待存储键值对的待存储键和待存储值;
第一存储模块,用于将所述待存储值存储至本地***内存;
第二获取模块,用于获取存储后的所述待存储值的元信息;
第二存储模块,用于将所述待存储键与所述元信息对应存储至应用内存。
进一步的,所述第二存储模块,具体用于根据散列算法,计算所述待存储键在应用内存中的散列桶中的存储位置;将所述待存储键和所述元信息存储至所述存储位置。
进一步的,所述装置还包括:
序列化模块,用于在所述第一存储模块将所述待存储值存储至本地***内存之前,将所述待存储值序列化为二进制流,并获取序列化方式信息,作为所述待存储值的元信息的一部分;
所述第一存储模块,具体用于将对所述待存储值序列化后得到的二进制流存储至本地***内存。
进一步的,所述装置还包括:
第三获取模块,用于当需要针对已存储键值对的已存储值进行更新时,在应用内存中获取与所述已存储键值对的已存储键对应的元信息,作为原元信息;
所述第一存储模块,还用于将本地***内存中所述原元信息表示的已存储值,更新为更新后值,并获取所述更新后值的新元信息;
所述第二存储模块,还用于将应用内存中的所述原元信息变更为所述新元信息。
进一步的,所述元信息包括所述待存储值在所述本地***内存中的存储地址。
本发明实施例还提供了一种数据查询装置,包括:
键获取模块,用于获取待查询键;
查询模块,用于在应用内存中查询与所述待查询键对应存储的元信息,所述元信息为所述待查询键对应的值的元信息;
值获取模块,用于在本地***内存中获取所述元信息表示的已存储值,作为所述待查询键对应的值。
进一步的,所述待查询键存储在所述应用内存中的散列桶中;
所述查询模块,具体用于根据散列算法,计算所述待查询键在应用内存中的散列桶中的存储位置;从所述存储位置获取元信息,作为与所述待查询键对应存储的元信息。
进一步的,所述元信息中包括所述待查询键对应的值被序列化为二进制流的序列化方式信息;
所述装置还包括:
反序列化模块,用于从所述元信息中获取所述序列化方式信息;使用所述序列化方式信息,对所述待查询键对应的值进行反序列化。
进一步的,所述元信息包括所述待查询键对应的值在所述本地***内存中的存储地址。
本发明实施例还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一数据存储的方法步骤。
本发明实施例还提供了一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现上述任一数据查询的方法步骤。
本发明实施还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据存储方法的步骤。
本发明实施还提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据查询方法的步骤。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一数据存储方法。
本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述任一数据查询方法。
本发明的有益效果:
本发明实施例提供一种数据存储方法、数据查询方法,将键值对存入缓存时,获取待存储键值对的待存储键和待存储值;将待存储值存储至本地***内存;获取存储后的待存储值的元信息;将待存储键与元信息对应存储至应用内存。查询缓存中的键值对时,获取待查询键;在应用内存中查询与待查询键对应存储的元信息,该元信息为待查询键对应的值的元信息;在本地***内存中获取元信息表示的已存储值,作为待查询键对应的值。采用本发明实施例提供的上述方法,不再将键值对的全部信息存储在应用内存中,而是在***内存中存放键值对的值,在应用内存中存放键值对的键信息和值的元信息,以减少在应用内存中存储的缓存信息,从而在不降低查询速率的同时,减少缓存对应用程序性能的不利影响。
当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1为本发明实施例提供的一种数据存储方法的流程示意图;
图2为本发明实施例提供的一种数据查询方法的流程示意图;
图3为本发明实施例提供的一种数据存储装置的结构示意图;
图4为本发明实施例提供的一种数据查询装置的结构示意图;
图5为本发明实施例提供的一种电子设备的结构示意图;
图6为本发明实施例提供的另一种电子设备的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
参见图1,图1为本发明实施例提供的一种数据存储方法的流程示意图,可以包括如下步骤:
步骤101,获取待存储键值对的待存储键和待存储值。
步骤102,将待存储值存储至本地***内存。
具体的,在执行本步骤之前,可以先将待存储值序列化为二进制流,并获取序列化方式信息,作为待存储值的元信息的一部分;
将待存储值存储至本地***内存,具体可以是将对待存储值序列化后得到的二进制流存储至本地***内存。
步骤103,获取存储后的待存储值的元信息。
具体的,元信息可以包括:待存储值在本地***内存中的存储地址,以及待存储值序列化为二进制流的序列化方式信息,在实际应用中,还可以将待存储键值对的其他信息也作为元信息的一部分,例如,元信息还可以包括待存储键值对的过期时间。
步骤104,将待存储键与元信息对应存储至应用内存。
在步骤S103~S104中,待存储键值对的过期时间是为待存储键值对设置的存储时限,可以在存储元信息至应用内存时进行指定,也可以直接使用默认的过期时间。如果需要指定过期时间,那么可以将所指定的过期时间也存储在元信息中。这里,应用内存可以是从***内存中划分出的一固定大小的内存区域,当划分出后,该部分内存区域将主要为该应用服务。
将待存储键与元信息对应存储至应用内存之后,可以根据LRU算法(LeastRecently Used,最近最少使用置换算法)或过期机制对已存储的键值对进行监听,一旦存储时间超过了设置的过期时间,便会将超过存储时限的值及其对应的键和元信息一同删除。
具体的,执行步骤S104可以采用如下方式:
根据散列算法,计算待存储键在应用内存中的散列桶中的存储位置;
将待存储键和元信息存储至该存储位置。
进一步的,当需要针对已存储键值对的已存储值进行更新时,可以在应用内存中获取与已存储键值对的已存储键对应的元信息,作为原元信息;
将本地***内存中原元信息表示的已存储值,更新为更新后值,并获取更新后值的新元信息;
将应用内存中的原元信息变更为新元信息。
采用本发明实施例提供的上述数据存储方法,不再将键值对的全部信息存储在应用内存中,而是在***内存中存放键值对的值,在应用内存中存放键值对的键信息和值的元信息,以减少在应用内存中存储的缓存信息,从而在不降低查询速率的同时,减少缓存对应用程序性能的不利影响。
针对上述图1所示的数据存储方法,下面举例进行详细说明。
例如,待存储键值对的待存储键为person│age│Lily,用于表示一个名叫Lily的人的年龄,待存储键值对的待存储值为18,用于表示18岁;
可以先将18序列化为一串二进制流,并获取序列化方式信息;
将18的二进制流存储至本地***内存,并获取该二进制流在本地***内存中的存储地址;
将18的二进制流在本地***内存中的存储地址和序列化方式信息作为待存储值的元信息的一部分;
根据散列算法,计算person│age│Lily在应用内存中的散列桶中的存储位置;
将person│age│Lily与待存储值的元信息存储至散列桶中的该存储位置。
当需要对已存在的键值对进行更新时,例如,需要将键person│age│Lily的值更新为19,则可以在应用内存中获取与键person│age│Lily对应存储的原元信息;
将原元信息中的本地***内存中的存储地址表示的已存值18的二进制流更新为19的二进制流,并将19的二进制流的序列化方式信息以及本地***内存中的存储地址作为新元信息的一部分;
将应用内存中的原元信息更新为新元信息。
可以理解的是,由于Java等语言具备垃圾回收机制,会定期扫描应用内存的使用情况。如果使用应用内存作为缓存,应用内存中存储的数据不断增多,也会导致采用垃圾回收机制扫描应用内存的时间增长,进一步造成应用程序运行速率的下降。
相应的,本发明实施例提供了一种数据查询方法,如图2所示,具体可以包括如下步骤:
步骤201,获取待查询键。
步骤202,在应用内存中查询与待查询键对应存储的元信息,该元信息为待查询键对应的值的元信息。
具体的,待查询键可以存储在应用内存中的散列桶中。
执行该步骤可以采用以下方式:
根据散列算法,计算待查询键在应用内存中的散列桶中的存储位置;
从该存储位置获取元信息,作为与待查询键对应存储的元信息。
步骤203,在本地***内存中获取该元信息表示的已存储值,作为待查询键对应的值。
具体的,元信息可以包括:待查询键对应的值在本地***内存中的存储地址,以及待查询键对应的值序列化为二进制流的序列化方式信息,在实际应用中,元信息还可以包括待查询键值对的其他信息,例如,元信息还可以包括待查询键值对的过期时间。
本步骤中,具体可以是根据元信息中的待查询键对应的值在本地***内存中的存储地址获取到待查询键对应的值。
具体的,在该步骤之后,还可以从元信息中获取序列化方式信息;
使用序列化方式信息,对待查询键对应的值进行反序列化。
针对上述图2所示的数据存储方法,下面举例进行详细说明。
例如,要查询Lily的年龄,可以先获取待查询键person│age│Lily;
根据散列算法,计算person│age│Lily在应用内存中的散列桶中的存储位置;
从该存储位置获取与person│age│Lily对应存储的元信息;
根据该元信息中的本地***内存的存储地址,获取保存在该存储地址的二进制流,例如,18的二进制流;
根据该元信息中的二进制流的序列化方式信息,将18的二进制流反序列化为18。
采用本发明实施例提供的上述数据存储方法,应用程序是在应用内存中查询待查询键,距离近,查询速率高,进一步的,根据元信息在本地***内存中查询待查询键对应的值,同样不需要通过网络IO,查询速率高,同时不需要在应用内存中查询待查询值,减少了对应用内存的查询次数,从而减少了对应用程序的不利影响。
基于同一发明构思,根据本发明上述实施例提供的数据存储方法,相应地,本发明另一实施例还提供了一种数据存储装置,其结构示意图如图3所示,具体包括:
第一获取模块301,用于获取待存储键值对的待存储键和待存储值;
第一存储模块302,用于将待存储值存储至本地***内存;
第二获取模块303,用于获取存储后的待存储值的元信息;
第二存储模块304,用于将待存储键与元信息对应存储至应用内存。
进一步的,第二存储模块304,具体用于根据散列算法,计算待存储键在应用内存中的散列桶中的存储位置;将待存储键和元信息存储至该存储位置。
进一步的,该装置还包括:
序列化模块305,用于在第一存储模块302将待存储值存储至本地***内存之前,将待存储值序列化为二进制流,并获取序列化方式信息,作为待存储值的元信息的一部分;
第一存储模块302,具体用于将对待存储值序列化后得到的二进制流存储至本地***内存。
进一步的,该装置还包括:
第三获取模块306,用于当需要针对已存储键值对的已存储值进行更新时,在应用内存中获取与已存储键值对的已存储键对应的元信息,作为原元信息;
第一存储模块302,还用于将本地***内存中原元信息表示的已存储值,更新为更新后值,并获取更新后值的新元信息;
第二存储模块304,还用于将应用内存中的原元信息变更为新元信息。
进一步的,元信息包括待存储值在本地***内存中的存储地址。
基于同一发明构思,根据本发明上述实施例提供的数据查询方法,相应地,本发明另一实施例还提供了一种数据查询装置,其结构示意图如图4所示,具体包括:
键获取模块401,用于获取待查询键;
查询模块402,用于在应用内存中查询与待查询键对应存储的元信息,该元信息为待查询键对应的值的元信息;
值获取模块403,用于在本地***内存中获取元信息表示的已存储值,作为待查询键对应的值。
进一步的,待查询键存储在应用内存中的散列桶中;
查询模块402,具体用于根据散列算法,计算待查询键在应用内存中的散列桶中的存储位置;从该存储位置获取元信息,作为与待查询键对应存储的元信息。
进一步的,该元信息中包括待查询键对应的值被序列化为二进制流的序列化方式信息;
该装置还包括:
反序列化模块404,用于从元信息中获取序列化方式信息;使用序列化方式信息,对待查询键对应的值进行反序列化。
进一步的,元信息包括待查询键对应的值在本地***内存中的存储地址。
基于同一发明构思,根据本发明上述实施例提供的数据存储方法,本发明实施例还提供了一种电子设备,如图5所示,包括处理器501、通信接口502、存储器503和通信总线504,其中,处理器501,通信接口502,存储器503通过通信总线504完成相互间的通信,
存储器503,用于存放计算机程序;
处理器501,用于执行存储器503上所存放的程序时,实现如下步骤:
获取待存储键值对的待存储键和待存储值;
将待存储值存储至本地***内存;
获取存储后的待存储值的元信息;
将待存储键与元信息对应存储至应用内存。
基于同一发明构思,根据本发明上述实施例提供的数据查询方法,本发明实施例还提供了一种电子设备,如图6所示,包括处理器601、通信接口602、存储器603和通信总线604,其中,处理器601,通信接口602,存储器603通过通信总线604完成相互间的通信,
存储器603,用于存放计算机程序;
处理器601,用于执行存储器603上所存放的程序时,实现如下步骤:
获取待查询键;
在应用内存中查询与待查询键对应存储的元信息,该元信息为待查询键对应的值的元信息;
在本地***内存中获取该元信息表示的已存储值,作为待查询键对应的值。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(Digital SignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据存储方法的步骤。
在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据查询方法的步骤。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据存储方法。
在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据查询方法。
在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(DSL))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,DVD)、或者半导体介质(例如固态硬盘Solid State Disk(SSD))等。
需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于装置、电子设备、计算机可读存储介质和计算机程序产品实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本发明的较佳实施例而已,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。

Claims (20)

1.一种数据存储方法,其特征在于,包括:
获取待存储键值对的待存储键和待存储值;
将所述待存储值存储至本地***内存;
获取存储后的所述待存储值的元信息;
将所述待存储键与所述元信息对应存储至应用内存。
2.根据权利要求1所述的方法,其特征在于,所述将所述待存储键与所述元信息对应存储至应用内存的步骤,包括:
根据散列算法,计算所述待存储键在应用内存中的散列桶中的存储位置;
将所述待存储键和所述元信息存储至所述存储位置。
3.根据权利要求1所述的方法,其特征在于,在所述将所述待存储值存储至本地***内存的步骤之前,所述方法还包括:
将所述待存储值序列化为二进制流,并获取序列化方式信息,作为所述待存储值的元信息的一部分;
所述将所述待存储值存储至本地***内存,包括:
将对所述待存储值序列化后得到的二进制流存储至本地***内存。
4.根据权利要求1所述的方法,其特征在于,还包括:
当需要针对已存储键值对的已存储值进行更新时,在应用内存中获取与所述已存储键值对的已存储键对应的元信息,作为原元信息;
将本地***内存中所述原元信息表示的已存储值,更新为更新后值,并获取所述更新后值的新元信息;
将应用内存中的所述原元信息变更为所述新元信息。
5.根据权利要求1至4中任一项所述的方法,其特征在于,所述元信息包括所述待存储值在所述本地***内存中的存储地址。
6.一种数据查询方法,其特征在于,包括:
获取待查询键;
在应用内存中查询与所述待查询键对应存储的元信息,所述元信息为所述待查询键对应的值的元信息;
在本地***内存中获取所述元信息表示的已存储值,作为所述待查询键对应的值。
7.根据权利要求6所述的方法,其特征在于,所述待查询键存储在所述应用内存中的散列桶中;
所述在应用内存中查询与所述待查询键对应存储的元信息的步骤,包括:
根据散列算法,计算所述待查询键在应用内存中的散列桶中的存储位置;
从所述存储位置获取元信息,作为与所述待查询键对应存储的元信息。
8.根据权利要求6所述的方法,其特征在于,所述元信息中包括所述待查询键对应的值被序列化为二进制流的序列化方式信息;
在所述在本地***内存中获取所述元信息表示的已存储值之后,还包括:
从所述元信息中获取所述序列化方式信息;
使用所述序列化方式信息,对所述待查询键对应的值进行反序列化。
9.根据权利要求6至8中任一项所述的方法,其特征在于,所述元信息包括所述待查询键对应的值在所述本地***内存中的存储地址。
10.一种数据存储装置,其特征在于,包括:
第一获取模块,用于获取待存储键值对的待存储键和待存储值;
第一存储模块,用于将所述待存储值存储至本地***内存;
第二获取模块,用于获取存储后的所述待存储值的元信息;
第二存储模块,用于将所述待存储键与所述元信息对应存储至应用内存。
11.根据权利要求10所述的装置,其特征在于,所述第二存储模块,具体用于根据散列算法,计算所述待存储键在应用内存中的散列桶中的存储位置;将所述待存储键和所述元信息存储至所述存储位置。
12.根据权利要求10所述的装置,其特征在于,所述装置还包括:
序列化模块,用于在所述第一存储模块将所述待存储值存储至本地***内存之前,将所述待存储值序列化为二进制流,并获取序列化方式信息,作为所述待存储值的元信息的一部分;
所述第一存储模块,具体用于将对所述待存储值序列化后得到的二进制流存储至本地***内存。
13.根据权利要求10所述的装置,其特征在于,还包括:
第三获取模块,用于当需要针对已存储键值对的已存储值进行更新时,在应用内存中获取与所述已存储键值对的已存储键对应的元信息,作为原元信息;
所述第一存储模块,还用于将本地***内存中所述原元信息表示的已存储值,更新为更新后值,并获取所述更新后值的新元信息;
所述第二存储模块,还用于将应用内存中的所述原元信息变更为所述新元信息。
14.根据权利要求10至13中任一项所述的装置,其特征在于,所述元信息包括所述待存储值在所述本地***内存中的存储地址。
15.一种数据查询装置,其特征在于,包括:
键获取模块,用于获取待查询键;
查询模块,用于在应用内存中查询与所述待查询键对应存储的元信息,所述元信息为所述待查询键对应的值的元信息;
值获取模块,用于在本地***内存中获取所述元信息表示的已存储值,作为所述待查询键对应的值。
16.根据权利要求15所述的装置,其特征在于,所述待查询键存储在所述应用内存中的散列桶中;
所述查询模块,具体用于根据散列算法,计算所述待查询键在应用内存中的散列桶中的存储位置;从所述存储位置获取元信息,作为与所述待查询键对应存储的元信息。
17.根据权利要求15所述的装置,其特征在于,所述元信息中包括所述待查询键对应的值被序列化为二进制流的序列化方式信息;
所述装置还包括:
反序列化模块,用于从所述元信息中获取所述序列化方式信息;使用所述序列化方式信息,对所述待查询键对应的值进行反序列化。
18.根据权利要求16至17中任一项所述的装置,其特征在于,所述元信息包括所述待查询键对应的值在所述本地***内存中的存储地址。
19.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求1-5任一所述的方法步骤。
20.一种电子设备,其特征在于,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
存储器,用于存放计算机程序;
处理器,用于执行存储器上所存放的程序时,实现权利要求6-9任一所述的方法步骤。
CN201910573663.5A 2019-06-28 2019-06-28 一种数据存储方法、数据查询方法及相关装置、电子设备 Active CN110321367B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN201910573663.5A CN110321367B (zh) 2019-06-28 2019-06-28 一种数据存储方法、数据查询方法及相关装置、电子设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910573663.5A CN110321367B (zh) 2019-06-28 2019-06-28 一种数据存储方法、数据查询方法及相关装置、电子设备

Publications (2)

Publication Number Publication Date
CN110321367A CN110321367A (zh) 2019-10-11
CN110321367B true CN110321367B (zh) 2021-12-17

Family

ID=68120556

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910573663.5A Active CN110321367B (zh) 2019-06-28 2019-06-28 一种数据存储方法、数据查询方法及相关装置、电子设备

Country Status (1)

Country Link
CN (1) CN110321367B (zh)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112800303B (zh) * 2019-11-13 2023-05-05 马上消费金融股份有限公司 一种浏览器数据的存储、读取方法及相关装置
CN112988737B (zh) * 2019-12-16 2023-09-15 北京奇艺世纪科技有限公司 数据存储方法及装置、数据获取方法及装置、电子设备
CN112416940B (zh) * 2020-11-27 2024-05-28 深信服科技股份有限公司 键值对存储方法、装置、终端设备以及存储介质

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置
US9703788B1 (en) * 2014-03-31 2017-07-11 EMC IP Holding Company LLC Distributed metadata in a high performance computing environment
CN107659626A (zh) * 2017-09-11 2018-02-02 上海交通大学 面向临时元数据的分离存储方法
CN109521959A (zh) * 2018-11-01 2019-03-26 西安交通大学 一种基于ssd-smr磁盘混合键值存储***数据组织方法

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9703788B1 (en) * 2014-03-31 2017-07-11 EMC IP Holding Company LLC Distributed metadata in a high performance computing environment
CN106202548A (zh) * 2016-07-25 2016-12-07 网易(杭州)网络有限公司 数据存储方法、查找方法及装置
CN107659626A (zh) * 2017-09-11 2018-02-02 上海交通大学 面向临时元数据的分离存储方法
CN109521959A (zh) * 2018-11-01 2019-03-26 西安交通大学 一种基于ssd-smr磁盘混合键值存储***数据组织方法

Also Published As

Publication number Publication date
CN110321367A (zh) 2019-10-11

Similar Documents

Publication Publication Date Title
CN110321367B (zh) 一种数据存储方法、数据查询方法及相关装置、电子设备
US11176099B2 (en) Lockless synchronization of LSM tree metadata in a distributed system
US11074225B2 (en) Synchronization of index copies in an LSM tree file system
US9384236B2 (en) Method and system for operating on database queries
CN110928904A (zh) 一种数据查询方法、装置及相关组件
CN109450969B (zh) 从第三方数据源服务器中获取数据的方法、装置和服务器
CN111506604B (zh) 访问数据的方法、装置和计算机程序产品
WO2020007288A1 (zh) 管理内存数据及在内存中维护数据的方法和***
CN110737682A (zh) 一种缓存操作方法、装置、存储介质和电子设备
CN109815240B (zh) 用于管理索引的方法、装置、设备和存储介质
US9513812B2 (en) Reference counting for memory areas
US9734178B2 (en) Searching entity-key associations using in-memory objects
WO2022156650A1 (zh) 访问数据的方法及装置
CN110321298B (zh) 一种时间间隔确定方法、装置、电子设备及介质
CN111563199A (zh) 一种数据处理方法及装置
CN111382206A (zh) 一种数据存储方法及装置
CN111651424A (zh) 一种数据处理方法、装置、数据节点及存储介质
CN111597259A (zh) 数据存储***、方法、装置、电子设备及存储介质
CN111046106A (zh) 缓存数据同步方法、装置、设备及介质
WO2020192663A1 (zh) 一种数据管理方法及相关设备
CN110427538B (zh) 一种数据查询方法、存储方法、装置及电子设备
US10956386B2 (en) Methods and apparatuses for automated performance tuning of a data modeling platform
CN116244217A (zh) 一种分布式缓存的添加方法、装置、电子设备及存储介质
US7251660B2 (en) Providing mappings between logical time values and real time values in a multinode system
US10204052B2 (en) Directory maintenance method and apparatus

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