使用多个键存储和检索数据的最佳方法

时间:2020-10-11 12:14:15

标签: algorithm data-structures

作为使用“ C”语言开发的应用程序的一部分,客户端将发送带有两个16字节值和一些数据的请求。每个客户端UID是两个16字节值之一,另一个是某个随机唯一对象UID。因此,服务器将从客户端接收以下种类的数据:

来自客户端1: <客户端UID1,obj UID1,随机数据>

来自客户端2: <客户端UID2,obj UID4,随机数据>

来自client3: <客户端UID3,obj UID5,随机数据>

服务器收到上述信息后,需要将它们存储在一种表中,并为每个此类请求响应一个8字节的唯一ID。客户端将使用的组合或唯一的8字节ID(由服务器生成)返回服务器,以处理与关联的随机数据。

由于收到的此类请求数量巨大,因此我无法将它们存储在数组中并将索引用作8字节的唯一ID。也会迫使我进行线性搜索以识别匹配的

那么,我能知道如何高效地组织数据,以便能够使用8个字节的唯一ID和的组合进行索引吗?

1 个答案:

答案 0 :(得分:0)

我认为,您需要使用hash-table,并在此处存储/查找数据。 添加或更新记录的速度非常快。 如果使用double hashing算法,则可以将哈希表索引用作unique 8-byte ID,以直接访问表单元而不进行搜索。当然,该索引将少于8个字节,但是我认为,您可以将其填充0左右。

您可以在emerSSL项目中获得我自己的双哈希实现。