本发明专利技术提供一种哈希数据存储方法和装置,方法包括:采用至少两种哈希算法分别对待存储数据进行哈希处理,获取待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;当待存储数据的各存储位置中存在空闲的存储位置时,将待存储数据存储在一个空闲的存储位置中;当待存储数据的各存储位置均不空闲时,根据待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对待存储数据进行迭代递归存储处理;本发明专利技术还提供了一种哈希数据存储装置。本发明专利技术可以有效减少哈希冲突,提高了资源的使用效率。
【技术实现步骤摘要】
本专利技术涉及通信技术,尤其涉及一种哈希数据存储方法和装置。
技术介绍
散列(Hash)算法通常也称之为哈希算法,通过hash算法将任意长度的输入变换成固定长度的输出,该输出便是散列值。这种转换是一种压缩映射,即散列值的空间通常远小于输入的空间,不同的输入可能会散列成相同的输出,因此不可能通过散列值来唯一确定输入值。哈希算法可以用于多种操作,如身份验证、通信领域中的目的地址匹配等过程。根据设定的哈希函数和冲突处理方法将一组关键字映射到一个有限的地址区间上,并以关键字在地址区间中的象作为记录在表中的存储位置,这种表称为哈希表或散列,其中的存储位置称为哈希地址或散列地址。哈希表作为一种线性数据结构,与表格和队列相比,查找速度较快。现有技术中存在各种各样的哈希算法,可以优化数据查找速度;然而,现有技术中的哈希算法通常存在哈希冲突,无法有效减少哈希冲突,从而影响资源的使用效率。
技术实现思路
本专利技术提供一种哈希数据存储方法和装置,有效减少哈希冲突,提高资源的使用效率。本专利技术的第一个方面是提供一种哈希数据存储方法,包括采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置;当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置。本专利技术的另一个方面是提供一种哈希数据存储装置,包括哈希处理模块,用于采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;第一存储模块,用于当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置;第二存储模块,用于当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置。本专利技术的技术效果是通过采用至少两种哈希算法分别对待存储数据进行哈希处理,获取待存储数据的至少两个哈希值,当待存储数据的各存储位置中存在空闲的存储位置时,将待存储数据存储在一个空闲的存储位置中,当待存储数据的各存储位置均不空闲时,根据待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对待存储数据进行迭代递归存储处理;本专利技术利用多种哈希算法来生成待存储数据的多个存储位置,从而可以有效减少哈希冲突,提高了资源的使用效率。附图说明图I为本专利技术哈希数据存储方法实施例一的流程图;图2为本专利技术哈希数据存储方法实施例二的流程图;图3为本专利技术哈希数据存储方法实施例二中的数据存储过程示意图一;图4为本专利技术哈希数据存储方法实施例二中的数据存储过程示意图二 ;图5为本专利技术哈希数据存储方法实施例二中的数据存储过程示意图三;图6为本专利技术哈希数据存储装置实施例一的结构示意图;图7为本专利技术哈希数据存储装置实施例二的结构示意图。具体实施例方式图I为本专利技术哈希数据存储方法实施例一的流程图,如图I所示,本实施例提供了一种哈希数据存储方法,可以具体包括如下步骤步骤101,采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值。本实施例为了有效减少哈希冲突,利用多种哈希算法来对数据进行存储。本步骤为采用至少两种哈希算法分别对待存储数据进行哈希处理,此处的至少两种哈希算法可以具体采用现有的各种哈希算法,通过至少两种哈希算法对待存储数据进行哈希处理,分别得到待存储数据的至少两个哈希值,此处的各哈希值分别与各哈希算法相对应。即通过一个哈希算法计算得到待存储数据的一个哈希值,通过至少两个哈希算法计算得到待存储数据的至少两个哈希值,具体每个哈希算法的哈希处理过程可以采用该哈希算法的现有哈希机制,此处不再一一赘述。对于已有的各哈希算法来说,可能不同哈希算法具体适用于不同的应用场景中,每个哈希算法在某个应用场景中可能有较好的散列效果,但其在其他应用场景中散列效果则较差,因此,本实施例综合多种哈希算法的优势来分别获取各哈希算法对应的哈希值。步骤102,当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中。由于通过上述步骤获取到了该待存储数据的多个哈希值,每个哈希值在存储空间中对应一个存储位置,因此待存储数据在存储空间中存在可以存储的多个存储位置。采用不同哈希算法对待存储数据进行哈希处理得到的不同哈希值,可能与其他已存储在存储空间中的已存储数据的哈希值相同,若两个数据的两个哈希值相同,则二者在存储时出现哈希冲突。为了避免这种哈希冲突,在本实施例中,在对每一个待存储数据进行存储时,均需要对该待存储数据的各存储位置进行哈希冲突判断,此处的待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置。在本实施例中,一个存储空间中包含有多个存储位置,通过哈希处理得到的各哈希值与这些存储位置具有对应关系,对应关系具体可以为哈希值与存储位置的序号的对应关系,二者可以相同,即哈希值代表存储位置的序号,例如,哈希值为2对应于存储空间中的第二个存储位置。当待存储数据的各存储位置中存在一个或多个空闲的存储位置时,可以将该待存储数据存储在其中一个空闲的存储位置中。在本实施例中,当存储空间中的某个存储位置未存储有数据,则表明该存储位置空闲;当存储空间中的某个位置存储有数据,则表明该存储位置不空闲。在对待存储数据进行存储时,由于每个待存储数据均包含至少两个存储位置,则可以依次判断这些存储位置是否空闲,当某个存储位置空闲时,便可以直接将该待存储数据存储在该存储位置,其他存储位置可以暂不用判断。如果待存储数据为第一个需要存储在存储空间中的数据,则在该待存储数据存储之前,该存储空间中的各存储位置均空闲,可以将该待存储数据存储在其中任意一个存储位置。如果待存储数据不是第一个需要存储在存储空间中的数据,则在该待存储数据存储之前,需要先判断当前存储空间中其他数据的存储位置是否与其存储位置发生冲突。步骤103,当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理。当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理。通过对待存储数据的各存储位置进行上述判断后,当该待存储数据的各存储位置均不空闲时,即各存储位置中均被其他数据占据,此时则根据该待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况,对该待存储数据进行递归存储处理。此处的递归存储处理可以具体为以待存本文档来自技高网...
【技术保护点】
一种哈希数据存储方法,其特征在于,包括:采用至少两种哈希算法分别对待存储数据进行哈希处理,获取所述待存储数据的至少两个哈希值,各哈希值分别与各哈希算法相对应;当所述待存储数据的各存储位置中存在空闲的存储位置时,将所述待存储数据存储在一个空闲的存储位置中;其中,所述待存储数据的各存储位置为所述待存储数据的至少两个哈希值分别对应的存储位置;当所述待存储数据的各存储位置均不空闲时,根据所述待存储数据的各存储位置中各第一已存储数据的其他存储位置的存储情况对所述待存储数据进行递归存储处理;其中,所述第一已存储数据的其他存储位置为所述第一已存储数据的其他哈希值对应的存储位置。
【技术特征摘要】
【专利技术属性】
技术研发人员:陈佳泳,
申请(专利权)人:福建星网锐捷网络有限公司,
类型:发明
国别省市:
还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。