键值数据存储方法、装置、存储介质与电子设备制造方法及图纸

技术编号:24206131 阅读:12 留言:0更新日期:2020-05-20 14:44
本公开提供了一种键值数据存储方法、键值数据存储装置、计算机可读存储介质与电子设备,属于数据处理技术领域。该方法包括:获取待存储数据,包括成对的键数据和值数据;根据所述键数据的哈希值,在共享内存的哈希存储区域中确定所述键数据对应的目标哈希存储单元;将所述键数据存储至所述共享内存的键存储区域中的目标键存储单元,所述目标键存储单元与所述目标哈希存储单元具有关联;将所述值数据存储至所述共享内存的值存储区域中的目标值存储单元,所述目标键存储单元的指针指向所述目标值存储单元。本公开能够解决共享内存场景下无法有效存储键值数据的问题,有利于不同的业务进程间的数据共享,提高效率。

Key data storage method, device, storage medium and electronic equipment

【技术实现步骤摘要】
键值数据存储方法、装置、存储介质与电子设备
本公开涉及数据处理
,尤其涉及一种键值数据存储方法、键值数据存储装置、计算机可读存储介质与电子设备。
技术介绍
共享内存作为计算机中一种大容量内存,方便业务进程加载和使用位于其中的数据,在业务进程重新启动后,共享内存中的数据仍然能够维持,从而提高数据使用的效率。然而,共享内存作为一维地址的存储空间,难以直接存储复杂的数据结构;特别是在搜索等领域,有大量的键值(key-value,KV)数据,例如某篇文章对应的特征数据等,这些数据经常占用数GB甚至数十GB的内存。因此,如何在共享内存中存储键值数据,是现有技术亟待解决的问题。现有的键值数据存储方案主要分为两种:第一种是基于第三方的组件部署独立的键值数据存储服务,第三方组件如Redis、Memcached(Redis和Memcached都是常用的键值数据库)等,通过网络访问来提供键值数据存储;第二种是基于标准容器的Map存储(Map是一种将键对象和值对象进行关联的容器),Map将键值数据存储在内存中,业务进程在内存创建Map对象,然后从磁盘上加载数据到内存中,解析数据为键值形式,插入到Map对象中。然而,在上述第一种方案中,如果业务进程需要一次性访问大量键值数据,会导致多次的网络访问,引发大数据量的网络传输,造成网络侧的访问延时和传输延时;在上述第二种方案中,需要业务进程维护键值数据的加载,对于数据量较大的键值数据,如果每次业务进程在启动时都进行数据加载,会导致较长的启动时间,严重影响在线服务的可靠性和稳定性。r>需要说明的是,在上述
技术介绍
部分公开的信息仅用于加强对本公开的背景的理解,因此可以包括不构成对本领域普通技术人员已知的现有技术的信息。
技术实现思路
本公开提供了一种键值数据存储方法、键值数据存储装置、计算机可读存储介质与电子设备,进而至少在一定程度上改善现有技术无法在共享内存中有效存储键值数据的问题。本公开的其他特性和优点将通过下面的详细描述变得显然,或部分地通过本公开的实践而习得。根据本公开的第一方面,提供一种键值数据存储方法,包括:获取待存储数据,包括成对的键数据和值数据;根据所述键数据的哈希值,在共享内存的哈希存储区域中确定所述键数据对应的目标哈希存储单元;将所述键数据存储至所述共享内存的键存储区域中的目标键存储单元,所述目标键存储单元与所述目标哈希存储单元具有关联;将所述值数据存储至所述共享内存的值存储区域中的目标值存储单元,所述目标键存储单元的指针指向所述目标值存储单元。可选的,所述方法还包括:将所述共享内存划分为所述哈希存储区域、所述键存储区域和所述值存储区域;向所述哈希存储区域的每个存储单元分别写入不同的预设哈希值,得到多个哈希存储单元;将所述键存储区域的存储单元确定为键存储单元;将所述值存储区域的存储单元确定为值存储单元。可选的,所述哈希存储区域包括N个存储单元,所述预设哈希值包括0到N-1,N为不小于2的正整数;所述键数据的哈希值为所述键数据对N取模。可选的,所述目标键存储单元通过以下步骤确定:在所述键存储区域中将一空闲的键存储单元确定为所述目标键存储单元;将所述目标键存储单元关联至所述目标哈希存储单元。可选的,所述将所述目标键存储单元关联至所述目标哈希存储单元,包括:将所述目标键存储单元添加至所述目标哈希存储单元的指针所指向的单向链表。可选的,所述键存储区域中包括一空闲键指示单元,所述空闲键指示单元的指针指向第一个空闲的键存储单元,所述空闲的键存储单元的任意两个相邻单元中前一个单元的指针指向后一个单元。可选的,所述方法还包括:当所述目标键存储单元中的键数据被删除时,解除所述目标键存储单元和所述目标哈希存储单元的关联。可选的,所述目标值存储单元通过以下步骤确定:根据所述值数据的数据量确定所需的值存储单元数量,在所述值存储区域中将对应数量的空闲的值存储单元确定为所述目标值存储单元;将所述目标键存储单元的指针指向所述目标值存储单元中的第一个单元,所述目标值存储单元的任意两个相邻单元中前一个单元的指针指向后一个单元。可选的,所述方法还包括:当所述目标值存储单元中的值数据被删除时,解除由所述目标键存储单元指向所述目标值存储单元的指针。可选的,所述方法还包括:当对所述共享内存中的数据进行操作时,将操作信息记录到操作日志中;当所述共享内存发生异常时,根据所述操作日志恢复所述共享内存中的数据。可选的,所述共享内存包括第一共享内存和第二共享内存;所述方法还包括:将所述第一共享内存和第二共享内存之一作为写入共享内存,另一作为读取共享内存;当有数据读取请求时,从所述读取共享内存读取数据;当有数据更新请求时,将更新后的数据写入所述写入共享内存,并将所述写入共享内存作为新的读取共享内存,将所述读取共享内存作为新的写入共享内存。可选的,所述方法还包括:当通过所述键数据查找所述值数据时,根据所述键数据的哈希值,在所述哈希存储区域中确定所述目标哈希存储单元;从所述目标哈希存储单元所关联的键存储单元中,查找所述键数据所在的所述目标键存储单元;从所述目标键存储单元的指针所指向的所述目标值存储单元中,获取所述值数据。根据本公开的第二方面,提供一种键值数据存储装置,包括:数据获取模块,用于获取待存储数据,包括成对的键数据和值数据;哈希确定模块,用于根据所述键数据的哈希值,在共享内存的哈希存储区域中确定所述键数据对应的目标哈希存储单元;键存储模块,用于将所述键数据存储至所述共享内存的键存储区域中的目标键存储单元,所述目标键存储单元与所述目标哈希存储单元具有关联;值存储模块,用于将所述值数据存储至所述共享内存的值存储区域中的目标值存储单元,所述目标键存储单元的指针指向所述目标值存储单元。可选的,所述装置还包括:内存配置模块,用于将所述共享内存划分为所述哈希存储区域、所述键存储区域和所述值存储区域,向所述哈希存储区域的每个存储单元分别写入不同的预设哈希值,得到多个哈希存储单元,将所述键存储区域的存储单元确定为键存储单元,以及将所述值存储区域的存储单元确定为值存储单元。可选的,所述哈希存储区域包括N个存储单元,所述预设哈希值包括0到N-1,N为不小于2的正整数;所述键数据的哈希值为所述键数据对N取模。可选的,所述键存储模块通过执行以下方法确定所述目标键存储单元:在所述键存储区域中将一空闲的键存储单元确定为所述目标键存储单元;将所述目标键存储单元关联至所述目标哈希存储单元。可选的,所述键存储模块,还用于将所述目标键存储单元添加至所述目标哈希存储单元的指针所指向的单向链表。可选的,所述键存储区域中包括一空闲键指示单元,所述空闲键指示单元的指针指向第一个空闲的键存储单元,所述空闲的键存储单元的任意两个相邻单元中前一个单元的指针指向后一个单元。可选的,所述键存储模块,还用于当所述目标键存储单元中的键数据被删除时,解除所述目标键存储单元和所述目标哈希存储单元的关联。可选的,所述值存储模块通过本文档来自技高网...

【技术保护点】
1.一种键值数据存储方法,其特征在于,包括:/n获取待存储数据,包括成对的键数据和值数据;/n根据所述键数据的哈希值,在共享内存的哈希存储区域中确定所述键数据对应的目标哈希存储单元;/n将所述键数据存储至所述共享内存的键存储区域中的目标键存储单元,所述目标键存储单元与所述目标哈希存储单元具有关联;/n将所述值数据存储至所述共享内存的值存储区域中的目标值存储单元,所述目标键存储单元的指针指向所述目标值存储单元。/n

【技术特征摘要】
1.一种键值数据存储方法,其特征在于,包括:
获取待存储数据,包括成对的键数据和值数据;
根据所述键数据的哈希值,在共享内存的哈希存储区域中确定所述键数据对应的目标哈希存储单元;
将所述键数据存储至所述共享内存的键存储区域中的目标键存储单元,所述目标键存储单元与所述目标哈希存储单元具有关联;
将所述值数据存储至所述共享内存的值存储区域中的目标值存储单元,所述目标键存储单元的指针指向所述目标值存储单元。


2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
将所述共享内存划分为所述哈希存储区域、所述键存储区域和所述值存储区域;
向所述哈希存储区域的每个存储单元分别写入不同的预设哈希值,得到多个哈希存储单元;
将所述键存储区域的存储单元确定为键存储单元;
将所述值存储区域的存储单元确定为值存储单元。


3.根据权利要求2所述的方法,其特征在于,所述哈希存储区域包括N个存储单元,所述预设哈希值包括0到N-1,N为不小于2的正整数;
所述键数据的哈希值为所述键数据对N取模。


4.根据权利要求1所述的方法,其特征在于,所述目标键存储单元通过以下步骤确定:
在所述键存储区域中将一空闲的键存储单元确定为所述目标键存储单元;
将所述目标键存储单元关联至所述目标哈希存储单元。


5.根据权利要求4所述的方法,其特征在于,所述将所述目标键存储单元关联至所述目标哈希存储单元,包括:
将所述目标键存储单元添加至所述目标哈希存储单元的指针所指向的单向链表。


6.根据权利要求4所述的方法,其特征在于,所述键存储区域中包括一空闲键指示单元,所述空闲键指示单元的指针指向第一个空闲的键存储单元,所述空闲的键存储单元的任意两个相邻单元中前一个单元的指针指向后一个单元。


7.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述目标键存储单元中的键数据被删除时,解除所述目标键存储单元和所述目标哈希存储单元的关联。


8.根据权利要求1所述的方法,其特征在于,所述目标值存储单元通过以下步骤确定:
根据所述值数据的数据量确定所需的值存储单元数量,在所述值存储区域中将对应数量的空闲的值存储单元确定为所述目标值存储单元;
将所述目标键存储单元的指针指向所述目标值存储单元中的第一个单元,所述目标值存储单元的任意两个相...

【专利技术属性】
技术研发人员:李辉
申请(专利权)人:腾讯科技深圳有限公司
类型:发明
国别省市:广东;44

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1