本公开的实施例涉及计算机,具体涉及一种数据存储和查询方法、装置、电子设备和存储介质。
背景技术:
1、键值对是一种常见的数据结构,通常用于存储数据,且可以快速地通过关键字来访问数据。
2、现有的,采用数组对键值对进行存储发生hash(哈希)冲突时,需要采取额外的策略来处理,例如使用链表或者红黑树等数据结构。
3、然而,采用链表或红黑树的方法在大规模数据存储和查询时可能引发性能问题,无法对数据进行快速高效的存储和查询。
4、因此,有必要提出一种数据存储和查询方法,以解决上述至少一个技术问题。
技术实现思路
1、本公开的实施例提出了一种数据存储和查询方法、装置、电子设备和存储介质。
2、第一方面,本公开提供了一种数据存储方法,包括:
3、获取请求存储的第一键值对和第二键值对,其中,第一键值对包括第一关键字和第一数据,第二键值对包括第二关键字和第二数据;
4、基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第一数组中的存储地址;
5、判断第一键值对和第二键值对在第一数组中的存储地址是否发生冲突;
6、若发生冲突,根据发生冲突的第一数组的存储地址创建第二数组;
7、基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第二数组中的存储地址;
8、根据第一键值对和第二键值对在第二数组中的存储地址将第一键值对和第二键值对存储至第二数组中。
9、在一些可选的实施方式中,根据发生冲突的第一数组的存储地址创建第二数组,包括:
10、获取第二数组的长度信息;
11、在发生冲突的第一数组中的存储地址中存储第二数组的地址信息;
12、基于第二数组的地址信息和长度信息创建第二数组。
13、在一些可选的实施方式中,基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第一数组中的存储地址,包括:
14、基于第一关键字和相关函数,计算第一键值对在第一数组中的第一存储地址;
15、基于第二关键字和相关函数,计算第二键值对在第一数组中的第二存储地址。
16、在一些可选的实施方式中,判断第一键值对和第二键值对在第一数组中的存储地址是否发生冲突,包括:
17、判断第一键值对在第一数组中的存储地址和第二键值对在第一数组中的存储地址是否相同;
18、若存储地址相同,确定第一键值对和第二键值对在第一数组中的存储地址发生冲突。
19、在一些可选的实施方式中,基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第二数组中的存储地址,包括:
20、基于第一关键字和相关函数,计算第一键值对在第二数组中的第三存储地址;
21、基于第二关键字和相关函数,计算第二键值对在第二数组中的第四存储地址。
22、在一些可选的实施方式中,根据第一键值对和第二键值对在第二数组中的存储地址将第一键值对和第二键值对存储至第二数组中,包括:
23、将第一键值对存储至第二数组的第三存储地址;
24、将第二键值对存储至第二数组的第四存储地址。
25、第二方面,本公开提供了一种数据查询方法,包括:
26、接收针对于目标键值对的查询请求,查询请求包括目标关键字;
27、基于目标关键字和相关函数,计算目标键值对在第一数组中的存储地址;
28、确定目标键值对在第一数组中的存储地址中所存储的数据是否为第二数组的地址信息;
29、若是第二数组的地址信息,基于目标关键字和相关函数,计算目标键值对在第二数组中的目标存储地址;
30、从目标存储地址中读取目标键值对。
31、第三方面,本公开提供了一种数据存储装置,包括:
32、获取单元,用于获取请求存储的第一键值对和第二键值对,其中,第一键值对包括第一关键字和第一数据,第二键值对包括第二关键字和第二数据;
33、第一计算单元,用于基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第一数组中的存储地址;
34、冲突判断单元,用于判断第一键值对和第二键值对在第一数组中的存储地址是否发生冲突;
35、数组创建单元,用于若发生冲突,根据发生冲突的第一数组的存储地址创建第二数组;
36、第二计算单元,用于基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第二数组中的存储地址;
37、键值对存储单元,用于根据第一键值对和第二键值对在第二数组中的存储地址将第一键值对和第二键值对存储至第二数组中。
38、第四方面,本公开提供了一种数据查询装置,包括:
39、接收单元,用于接收针对于目标键值对的查询请求,查询请求包括目标关键字;
40、第三计算单元,用于基于目标关键字和相关函数,计算目标键值对在第一数组中的存储地址;
41、确定单元,用于若是第二数组的地址信息,基于目标关键字和相关函数,计算目标键值对在第二数组中的目标存储地址;
42、第四计算单元,用于若是,基于目标关键字和相关函数,计算目标数据在第二数组中的目标存储地址;
43、读取单元,用于从目标存储地址中读取目标键值对。
44、第五方面,本公开提供了一种电子设备,包括:
45、一个或多个处理器;
46、存储装置,其上存储有一个或多个程序,
47、当上述一个或多个程序被上述一个或多个处理器执行时,使得上述一个或多个处理器实现如本公开第一方面和/或第二方面任一实施方式描述的方法。
48、第六方面,本公开提供了一种计算机可读存储介质,其上存储有计算机程序,其中,上述计算机程序被一个或多个处理器执行时实现如本公开第一方面和/或第二方面任一实施方式描述的方法。
49、本公开的实施例提供的数据存储方法、装置、电子设备和存储介质,获取请求存储的第一键值对和第二键值对,其中,第一键值对包括第一关键字和第一数据,第二键值对包括第二关键字和第二数据。基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第一数组中的存储地址。判断第一键值对和第二键值对在第一数组中的存储地址是否发生冲突。若发生冲突,根据发生冲突的第一数组的存储地址创建第二数组。基于第一关键字、第二关键字和相关函数,计算第一键值对和第二键值对在第二数组中的存储地址。根据第一键值对和第二键值对在第二数组中的存储地址将第一键值对和第二键值对存储至第二数组中。当键值对在存储过程中发生冲突时,创建新的数组对键值对进行存储,可以实现对数据的快速高效的存储。
1.一种数据存储方法,其特征在于,所述方法包括:
2.根据权利要求1所述的方法,其特征在于,所述根据发生冲突的所述第一数组的存储地址创建第二数组,包括:
3.根据权利要求1所述的方法,其特征在于,所述基于所述第一关键字、所述第二关键字和相关函数,计算第一键值对和第二键值对在第一数组中的存储地址,包括:
4.根据权利要求1所述的方法,其特征在于,所述判断所述第一键值对和所述第二键值对在所述第一数组中的存储地址是否发生冲突,包括:
5.根据权利要求1所述的方法,其特征在于,基于所述第一关键字、所述第二关键字和所述相关函数,计算所述第一键值对和所述第二键值对在所述第二数组中的存储地址,包括:
6.根据权利要求5所述的方法,其特征在于,所述根据所述第一键值对和所述第二键值对在所述第二数组中的存储地址将所述第一键值对和所述第二键值对存储至所述第二数组中,包括:
7.一种数据查询方法,其特征在于,所述方法包括:
8.一种数据存储装置,包括:
9.一种数据查询装置,包括:
10.一种电子设备,包括:
11.一种计算机可读存储介质,其上存储有计算机程序,其中,所述计算机程序被一个或多个处理器执行时实现如权利要求1-6和/或7中任一项所述的方法。