首页 / 专利库 / 资料储存系统 / 根哈希 / 关键字存储、查找的方法及装置

关键字存储、查找的方法及装置

阅读:129发布:2020-05-12

专利汇可以提供关键字存储、查找的方法及装置专利检索,专利查询,专利分析的服务。并且公开了一种关键字的存储方法,该方法包括:将关键字分别经第一哈希函数、第二哈希函数运算,获得第一哈希桶、第二哈希桶的地址;根据第一哈希桶、第二哈希桶的地址,查找第一哈希桶、第二哈希桶;若第一哈希桶中没有与该关键字的压缩关键字相冲突的压缩关键字,则:在第一哈希桶有剩余空间时,将该关键字的压缩关键字及该关键字的 指针 存入第一哈希桶;在第一哈希桶没有剩余空间、第二哈希桶有剩余空间且第二哈希桶中没有与该关键字的压缩关键字相冲突的压缩关键字时,将该关键字的压缩关键字及该关键字的指针存入第二哈希桶。同时公开一种关键字的查找方法、存储装置和查找装置。可以大大提高内存利用率,节省存储空间和带宽。,下面是关键字存储、查找的方法及装置专利的具体信息内容。

1.一种关键字的存储方法,其特征在于,该方法包括:
将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;
将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;
若第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字,所述关键字的压缩关键字由所述关键字经第三哈希函数运算获得,则:
在第一哈希桶有剩余空间时,将所述关键字的压缩关键字及所述关键字的指针存入第一哈希桶;
在第一哈希桶没有剩余空间、第二哈希桶有剩余空间且第二哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针存入第二哈希桶。
2.如权利要求1所述的方法,其特征在于,还包括:
若第一哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字,则将所述关键字及所述关键字的指针存入三进制内容可寻址存储器TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
或,若第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字且没有剩余空间、第二哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字,则将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
或,若第一哈希桶和第二哈希桶均没有剩余空间,则将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM。
3.如权利要求2所述的方法,其特征在于,还包括:
若所述TCAM中有与第一哈希桶中压缩关键字不相冲突的压缩关键字,则将该压缩关键字及对应的关键字指针搬移到第一哈希桶中;
若所述TCAM中有与第二哈希桶中压缩关键字不相冲突的压缩关键字,则将该压缩关键字及对应的关键字指针搬移到第二哈希桶中。
4.一种关键字的查找方法,其特征在于,所述关键字按权利要求2或3所述方法进行存储,所述查找方法包括:
在所述TCAM中查找所述关键字或所述关键字的压缩关键字;若未查找到,则:
在第一哈希桶中查找所述关键字的压缩关键字;若未查找到,则:
在第二哈希桶中查找所述关键字的压缩关键字。
5.如权利要求4所述的方法,其特征在于,若在第一哈希桶中查找到所述关键字的压缩关键字,则进一步按该压缩关键字对应的关键字指针查找所述关键字;若未查找到,则在第二哈希桶中查找所述关键字的压缩关键字;
若在第二哈希桶中查找到所述关键字的压缩关键字,则进一步按该压缩关键字对应的关键字指针查找所述关键字。
6.如权利要求5所述的方法,其特征在于,若在第一哈希桶和第二哈希桶中均查找到所述关键字的压缩关键字,则:
将所述关键字的压缩关键字及所述关键字的指针搬移到所述TCAM中。
7.一种关键字的存储装置,其特征在于,该装置包括:
第一哈希桶查找模,用于将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;
第二哈希桶查找模块,用于将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;
第一确定模块,用于确定第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字,所述关键字的压缩关键字由所述关键字经第三哈希函数运算获得;
第一存储模块,用于在第一哈希桶有剩余空间时,将所述关键字的压缩关键字及所述关键字的指针存入第一哈希桶;
第二存储模块,用于在第一哈希桶没有剩余空间、第二哈希桶有剩余空间且第二哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针存入第二哈希桶。
8.如权利要求7所述的装置,其特征在于,还包括:
第二确定模块,用于确定第一哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字;第三存储模块,用于将所述关键字及所述关键字的指针存入TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
或,所述第二确定模块用于确定第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字且没有剩余空间、第二哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字;所述第三存储模块用于将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
或,所述第二确定模块用于确定第一哈希桶和第二哈希桶均没有剩余空间;所述第三存储模块用于将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM。
9.如权利要求8所述的装置,其特征在于,还包括:
第一搬移模块,用于在所述TCAM中有与第一哈希桶中压缩关键字不相冲突的压缩关键字时,将该压缩关键字及对应的关键字指针搬移到第一哈希桶中;在所述TCAM中有与第二哈希桶中压缩关键字不相冲突的压缩关键字时,将该压缩关键字及对应的关键字指针搬移到第二哈希桶中。
10.一种关键字的查找装置,其特征在于,所述关键字由权利要求8或9所述关键字的存储装置进行存储,所述查找装置包括:
第一关键字查找模块,用于在所述TCAM中查找所述关键字或所述关键字的压缩关键字;
第二关键字查找模块,用于在所述第一关键字查找模块未查找到所述关键字或所述关键字的压缩关键字时,在第一哈希桶中查找所述关键字的压缩关键字;
第三关键字查找模块,用于在所述第二关键字查找模块未查找到所述关键字的压缩关键字时,在第二哈希桶中查找所述关键字的压缩关键字。
11.如权利要求10所述的装置,其特征在于,所述第二关键字查找模块进一步用于:
在第一哈希桶中查找到所述关键字的压缩关键字时,按该压缩关键字对应的关键字指针查找所述关键字;
所述第三关键字查找模块进一步用于:在所述第二关键字查找模块未查找到所述关键字时,在第二哈希桶中查找所述关键字的压缩关键字;在第二哈希桶中查找到所述关键字的压缩关键字时,按该压缩关键字对应的关键字指针查找所述关键字。
12.如权利要求11所述的装置,其特征在于,还包括:
第二搬移模块,用于在所述第二关键字查找模块在第一哈希桶查找到所述关键字的压缩关键字,且所述第三关键字查找模块在第二哈希桶中查找到所述关键字的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针搬移到所述TCAM中。

说明书全文

关键字存储、查找的方法及装置

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及关键字存储、查找的方法及装置。

背景技术

[0002] 基于哈希(hash)的精确匹配算法在各领域均有广泛应用。低延时、低冲突概率和高性能是大家追求的目标。
[0003] 现有技术提供了一种通过二次哈希算法实现精确匹配查找的方案。该方案中,对于一个进行精确匹配查找的关键字(key),使用两个哈希函数。
[0004] 通过哈希函数1运算,可以得到一个初始哈希桶地址,初始哈希桶中包含若干压缩关键字单元和一个级连链表指针。每个压缩关键字单元由一个压缩关键字和一个关键字指针构成。有效的级连链表指针指向一个级连哈希桶。级连哈希桶的数据结构与初始哈希桶一致。
[0005] 通过哈希函数2运算,可以得到一个压缩关键字。将得到的压缩关键字与初始哈希桶和/或级连哈希桶中存储的有效的压缩关键字进行如下比较:
[0006] 如果初始哈希桶及相应的链表中没有匹配的压缩关键字,则需要检查是否有有效的级连哈希桶指针,并比较级连哈希桶中是否存在有效的匹配的压缩关键字;
[0007] 如果所有关联的哈希桶中都没有匹配的压缩关键字,则说明本次查找没有命中;如果有有效的匹配的压缩关键字,则需要一一检查对应的完整关键字是否匹配,直至遍历结束或找到匹配的完整关键字;
[0008] 如果所有有效匹配的压缩关键字对应的完整关键字都不匹配,说明本次查找没有命中;如果查到有匹配的完整关键字,则说明本次查找命中,查找结束。
[0009] 发明人在实现本发明的过程中,发现上述现有技术存在如下不足:
[0010] 哈希函数1的冲突会导致初始哈希桶中需要保存较多表项才能达到减少级连哈希桶的目的。但是初始哈希桶的桶深过深会导致存储空间和带宽的浪费。哈希函数2的冲突会导致压缩关键字冲突,需要多次访问哈希桶才能完成查找,这样会增加查找延时。

发明内容

[0011] 本发明实施例提供一种关键字的存储方法,用以节约存储空间和带宽,该方法包括:
[0012] 将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;
[0013] 将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;
[0014] 若第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字,所述关键字的压缩关键字由所述关键字经第三哈希函数运算获得,则:
[0015] 在第一哈希桶有剩余空间时,将所述关键字的压缩关键字及所述关键字的指针存入第一哈希桶;
[0016] 在第一哈希桶没有剩余空间、第二哈希桶有剩余空间且第二哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针存入第二哈希桶。
[0017] 本发明实施例还提供一种关键字的查找方法,用以降低查找延时,提高查找效率,该查找方法包括:
[0018] 在所述TCAM中查找所述关键字或所述关键字的压缩关键字;若未查找到,则:
[0019] 在第一哈希桶中查找所述关键字的压缩关键字;若未查找到,则:
[0020] 在第二哈希桶中查找所述关键字的压缩关键字。
[0021] 本发明实施例还提供一种关键字的存储装置,用以节约存储空间和带宽,该装置包括:
[0022] 第一哈希桶查找模,用于将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;
[0023] 第二哈希桶查找模块,用于将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;
[0024] 第一确定模块,用于确定第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字,所述关键字的压缩关键字由所述关键字经第三哈希函数运算获得;
[0025] 第一存储模块,用于在第一哈希桶有剩余空间时,将所述关键字的压缩关键字及所述关键字的指针存入第一哈希桶;
[0026] 第二存储模块,用于在第一哈希桶没有剩余空间、第二哈希桶有剩余空间且第二哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针存入第二哈希桶。
[0027] 本发明实施例还提供一种关键字的查找装置,用以降低查找延时,提高查找效率,该查找装置中的关键字由上述关键字的存储装置进行存储,该查找装置包括:
[0028] 第一关键字查找模块,用于在所述TCAM中查找所述关键字或所述关键字的压缩关键字;
[0029] 第二关键字查找模块,用于在所述第一关键字查找模块未查找到所述关键字或所述关键字的压缩关键字时,在第一哈希桶中查找所述关键字的压缩关键字;
[0030] 第三关键字查找模块,用于在所述第二关键字查找模块未查找到所述关键字的压缩关键字时,在第二哈希桶中查找所述关键字的压缩关键字。
[0031] 本发明实施例中,将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;不同于现有技术中仅通过一个哈希函数获得初始哈希桶地址,由初始哈希桶中级连链表指针指向级连哈希桶,而是通过两个由不同哈希函数独立获取地址的哈希桶,来完成对关键字的存储操作,从而大大提高内存利用率,节省存储空间和带宽;并且,由关键字经不同哈希函数运算获得地址的两个哈希桶可以采用不同的深度,可以增加存储的灵活性;另外,在第一哈希桶或第二哈希桶存储关键字时进行的压缩关键字冲突判断,也可以避免第一哈希桶或第二哈希桶中出现压缩关键字冲突的情况。
[0032] 本发明实施例中,先在TCAM中查找关键字或关键字的压缩关键字,若能够查找到,则可以避免查找第一哈希桶和/或第二哈希桶,从而使查找延时大幅降低,查找效率得以有效提高。附图说明
[0033] 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。在附图中:
[0034] 图1为本发明实施例中关键字的存储方法的处理流程图
[0035] 图2为本发明实施例中关键字的查找方法的处理流程图;
[0036] 图3为本发明实施例中关键字的存储和查找方法的示意图;
[0037] 图4为本发明实施例中关键字的存储和查找方法的另一示意图;
[0038] 图5、图6、图7为本发明实施例中关键字的存储装置的结构示意图;
[0039] 图8、图9为本发明实施例中关键字的查找装置的结构示意图。

具体实施方式

[0040] 为使本发明实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本发明实施例做进一步详细说明。在此,本发明的示意性实施例及其说明用于解释本发明,但并不作为对本发明的限定。
[0041] 如图1所示,本发明实施例中,关键字的存储方法的处理流程可以包括:
[0042] 步骤101、将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;
[0043] 步骤102、将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;
[0044] 步骤103、若第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字,所述关键字的压缩关键字由所述关键字经第三哈希函数运算获得,确定第一哈希桶是否有剩余空间,若是,则转入步骤104;若否,则转入步骤105;
[0045] 步骤104、将所述关键字的压缩关键字及所述关键字的指针存入第一哈希桶;
[0046] 步骤105、在第二哈希桶有剩余空间且第二哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针存入第二哈希桶。
[0047] 由图1所示流程可以得知,本发明实施例中,将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;不同于现有技术中仅通过一个哈希函数获得初始哈希桶地址,由初始哈希桶中级连链表指针指向级连哈希桶,而是通过两个由不同哈希函数独立获取地址的哈希桶,来完成对关键字的存储操作,从而大大提高内存利用率,节省存储空间和带宽;并且,由关键字经不同哈希函数运算获得地址的两个哈希桶可以采用不同的深度,可以增加存储的灵活性;另外,在第一哈希桶或第二哈希桶存储关键字时进行的压缩关键字冲突判断,也可以避免第一哈希桶或第二哈希桶中出现压缩关键字冲突的情况。
[0048] 图1中步骤101和步骤102的执行先后顺序并不影响本发明实施例的具体实施。步骤101和步骤102中,将关键字经第一哈希函数运算,可以获得第一哈希桶的地址;将关键字经第二哈希函数运算,可以获得第二哈希桶的地址;此处,第一哈希函数和第二哈希函数为不同的哈希函数,将关键字经这两个不同的哈希函数进行运算,可以获得两个不同的哈希桶地址,这两个哈希函数的具体设定利用现有技术即可得知。根据第一哈希桶的地址可以查找到第一哈希桶;根据第二哈希桶的地址可以查找到第二哈希桶,从而可以实施步骤103至步骤105,在第一哈希桶或第二哈希桶中,对关键字进行存储操作。具体实施时,待存储的关键字的压缩关键字,可以由关键字经第三哈希函数运算获得,第三哈希函数的具体设定利用现有技术也可得知。
[0049] 为了更进一步地避免存储时第一哈希桶或第二哈希桶中出现压缩关键字冲突的情况,另一实施例中,还可以引入TCAM(Ternary Content Addressable Memory,三进制内容可寻址存储器),对关键字进行存储操作。当然,TCAM中可以存储完整的关键字和关键字的指针,也可以为节省存储空间的目的,存储关键字的压缩关键字和关键字的指针。即,具体可实施为:
[0050] 若第一哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字,则将所述关键字及所述关键字的指针存入TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
[0051] 或,若第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字且没有剩余空间、第二哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字,则将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
[0052] 或,若第一哈希桶和第二哈希桶均没有剩余空间,则将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM。
[0053] 一个实施例中,上述关键字的存储方法还可以包括:
[0054] 若所述TCAM中有与第一哈希桶中压缩关键字不相冲突的压缩关键字,则将该压缩关键字及对应的关键字指针搬移到第一哈希桶中;
[0055] 若所述TCAM中有与第二哈希桶中压缩关键字不相冲突的压缩关键字,则将该压缩关键字及对应的关键字指针搬移到第二哈希桶中。
[0056] 例如,当在第一哈希桶或第二哈希桶中删除的关键字的压缩关键字及关键字的指针达到一定数量时,原冲突的压缩关键字可能已不再冲突;此时可以启动TCAM扫描,将不再存在冲突的压缩关键字及对应的关键字指针从TCAM搬移到第一哈希桶或第二哈希桶中,这样可以有效的节约TCAM空间,避免反复添加删除后TCAM可用空间的降低。
[0057] 如图2所示,本发明实施例中还提供一种关键字的查找方法,该查找方法中的关键字按前述关键字的存储方法进行存储,该查找方法可以包括:
[0058] 步骤201、在所述TCAM中查找所述关键字或所述关键字的压缩关键字;
[0059] 步骤202、若在所述TCAM中未查找到所述关键字或所述关键字的压缩关键字,则在第一哈希桶中查找所述关键字的压缩关键字;
[0060] 步骤203、若在第一哈希桶中仍未查找到所述关键字的压缩关键字,则在第二哈希桶中查找所述关键字的压缩关键字。
[0061] 由图2所示流程可以得知,本发明实施例中,按前述关键字的存储方法存储关键字后,先在TCAM中查找关键字或关键字的压缩关键字,若能够查找到,则可以避免查找第一哈希桶和/或第二哈希桶,从而使查找延时大幅降低,查找效率得以有效提高。具体实施时,查找延时还可以稳定在一个固定值。
[0062] 当然,实施过程中,为了提高查找的准确性,在第一哈希桶和/或第二哈希桶中查找到关键字的压缩关键字后,还可以进一步按该压缩关键字对应的关键字指针查找完整的关键字,以确定是否真正能够找到要找的关键字。
[0063] 一个实施例中,若在第一哈希桶中查找到所述关键字的压缩关键字,则进一步按该压缩关键字对应的关键字指针查找所述关键字;若未查找到,则在第二哈希桶中查找所述关键字的压缩关键字;若在第二哈希桶中查找到所述关键字的压缩关键字,则进一步按该压缩关键字对应的关键字指针查找所述关键字。
[0064] 查找过程中,若在第一哈希桶和第二哈希桶中均查找到所述关键字的压缩关键字,还可以将所述关键字的压缩关键字及所述关键字的指针搬移到所述TCAM中,这样可以保证下次查找时不会既访问第一哈希桶又访问第二哈希桶,从而进一步提高查找的效率。
[0065] 下面结合图例综合说明上述实施例中关键字的存储方法和查找方法。图3为上述关键字的存储方法和查找方法的示意图。图3中的哈希桶包括:第一哈希桶(HT1)、第二哈希桶(HT2);图3中还示出了第一哈希桶、第二哈希桶和TCAM中存储的关键字指针指向的完整关键字,这些完整关键字存储于一个完整关键字桶(KT)。哈希桶通过存储接口0与查找引擎相互通信;完整关键字桶通过存储接口1与查找引擎相互通信;查找引擎与TCAM相互通信;TCAM与SRAM相互通信。如图3所示,由第一哈希桶、第二哈希桶和TCAM配合完成对关键字的操作过程。第一哈希桶和第二哈希桶的桶深可以不同。
[0066] 图4具体示出了图3所示第一哈希桶、第二哈希桶和TCAM所存储的关键字、压缩关键字和关键字的指针。其中,第一哈希桶和第二哈希桶中均存储有压缩关键字和对应关键字指针,关键字的指针还指向完整关键字桶中完整的关键字。TCAM中存储有关键字和关键字的指针。
[0067] 本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件完成,所述的程序可以存储于一计算机可读取存储介质中,该程序在执行时,可以包括上述实施例方法中的全部或部分步骤,所述的存储介质可以包括:ROM、RAM、磁盘、光盘等。
[0068] 本发明实施例中还提供了一种关键字的存储装置和查找装置,如下面的实施例所述。由于该些装置解决问题的原理与关键字存储方法和查找方法相似,因此该些装置的实施可以参见方法的实施,重复之处不再赘述。
[0069] 如图5所示,本发明实施例中的关键字的存储装置可以包括:
[0070] 第一哈希桶查找模块501,用于将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;
[0071] 第二哈希桶查找模块502,用于将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;
[0072] 第一确定模块503,用于确定第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字,所述关键字的压缩关键字由所述关键字经第三哈希函数运算获得;
[0073] 第一存储模块504,用于在第一哈希桶有剩余空间时,将所述关键字的压缩关键字及所述关键字的指针存入第一哈希桶;
[0074] 第二存储模块505,用于在第一哈希桶没有剩余空间、第二哈希桶有剩余空间且第二哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针存入第二哈希桶。
[0075] 如图6所示,一个实施例中,图5所示关键字的存储装置还可以包括:
[0076] 第二确定模块601,用于确定第一哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字;第三存储模块602,用于将所述关键字及所述关键字的指针存入TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
[0077] 或,所述第二确定模块601用于确定第一哈希桶中没有与所述关键字的压缩关键字相冲突的压缩关键字且没有剩余空间、第二哈希桶中有与所述关键字的压缩关键字相冲突的压缩关键字;所述第三存储模块602用于将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM;
[0078] 或,所述第二确定模块601用于确定第一哈希桶和第二哈希桶均没有剩余空间;所述第三存储模块602用于将所述关键字及所述关键字的指针存入所述TCAM,或将所述关键字的压缩关键字及所述关键字的指针存入所述TCAM。
[0079] 如图7所示,一个实施例中,图6所示关键字的存储装置还可以包括:
[0080] 第一搬移模块701,用于在所述TCAM中有与第一哈希桶中压缩关键字不相冲突的压缩关键字时,将该压缩关键字及对应的关键字指针搬移到第一哈希桶中;在所述TCAM中有与第二哈希桶中压缩关键字不相冲突的压缩关键字时,将该压缩关键字及对应的关键字指针搬移到第二哈希桶中。
[0081] 如图8所示,本发明实施例中还提供一种关键字的查找装置,所查找的关键字由图6或图7所示关键字的存储装置进行存储,该查找装置可以包括:
[0082] 第一关键字查找模块801,用于在所述TCAM中查找所述关键字或所述关键字的压缩关键字;
[0083] 第二关键字查找模块802,用于在所述第一关键字查找模块801未查找到所述关键字的压缩关键字时,在第一哈希桶中查找所述关键字的压缩关键字;
[0084] 第三关键字查找模块803,用于在所述第二关键字查找模块802未查找到所述关键字的压缩关键字时,在第二哈希桶中查找所述关键字的压缩关键字。
[0085] 一个实施例中,第二关键字查找模块802还可以用于:
[0086] 在第一哈希桶中查找到所述关键字的压缩关键字时,按该压缩关键字对应的关键字指针查找所述关键字;
[0087] 第三关键字查找模块803还可以用于:在第二关键字查找模块802未查找到所述关键字时,在第二哈希桶中查找所述关键字的压缩关键字;在第二哈希桶中查找到所述关键字的压缩关键字时,按该压缩关键字对应的关键字指针查找所述关键字。
[0088] 如图9所示,一个实施例中,图8所示关键字的查找装置还可以包括:
[0089] 第二搬移模块901,用于在所述第二关键字查找模块在第一哈希桶查找到所述关键字的压缩关键字,且所述第三关键字查找模块在第二哈希桶中查找到所述关键字的压缩关键字时,将所述关键字的压缩关键字及所述关键字的指针搬移到所述TCAM中。
[0090] 本发明实施例中,将关键字经第一哈希函数运算,获得第一哈希桶的地址;根据第一哈希桶的地址,查找第一哈希桶;将所述关键字经第二哈希函数运算,获得第二哈希桶的地址;根据第二哈希桶的地址,查找第二哈希桶;不同于现有技术中仅通过一个哈希函数获得初始哈希桶地址,由初始哈希桶中级连链表指针指向级连哈希桶,而是通过两个由不同哈希函数独立获取地址的哈希桶,来完成对关键字的存储操作,从而大大提高内存利用率,节省存储空间和带宽;并且,由关键字经不同哈希函数运算获得地址的两个哈希桶可以采用不同的深度,可以增加存储的灵活性;另外,在第一哈希桶或第二哈希桶存储关键字时进行的压缩关键字冲突判断,也可以避免第一哈希桶或第二哈希桶中出现压缩关键字冲突的情况。
[0091] 本发明实施例中,引入TCAM对关键字进行存储操作,还可以进一步地避免哈希桶中出现压缩关键字冲突的情况,并且,在上述关键字的查找方法中,先在TCAM中查找关键字或关键字的压缩关键字,若能够查找到,则可以避免查找第一哈希桶和/或第二哈希桶,使查找延时大幅降低,查找效率得以有效提高。另外,将不再存在冲突的压缩关键字及对应的关键字指针从TCAM搬移到哈希桶中,也可以有效的节约TCAM空间,避免反复添加删除后TCAM可用空间的降低。
[0092] 以上所述的具体实施例,对本发明的目的、技术方案和有益效果进行了进一步详细说明,所应理解的是,以上所述仅为本发明的具体实施例而已,并不用于限定本发明的保护范围,凡在本发明的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。
高效检索全球专利

专利汇是专利免费检索,专利查询,专利分析-国家发明专利查询检索分析平台,是提供专利分析,专利查询,专利检索等数据服务功能的知识产权数据服务商。

我们的产品包含105个国家的1.26亿组数据,免费查、免费专利分析。

申请试用

分析报告

专利汇分析报告产品可以对行业情报数据进行梳理分析,涉及维度包括行业专利基本状况分析、地域分析、技术分析、发明人分析、申请人分析、专利权人分析、失效分析、核心专利分析、法律分析、研发重点分析、企业专利处境分析、技术处境分析、专利寿命分析、企业定位分析、引证分析等超过60个分析角度,系统通过AI智能系统对图表进行解读,只需1分钟,一键生成行业专利分析报告。

申请试用

QQ群二维码
意见反馈