如何根据散列中的键/值查找键/值数据并将其添加到 Redis 中的散列?

Posted

技术标签:

【中文标题】如何根据散列中的键/值查找键/值数据并将其添加到 Redis 中的散列?【英文标题】:How can I find and add key / value data to hashes in Redis based on a key / value inside the hash? 【发布时间】:2017-06-16 07:52:50 【问题描述】:

我的 Redis 数据存储中有大量的键,所有这些键都具有随机十六进制文本的任意长名称。

所有的哈希键都有一个名为 name 的键,它有一个值。

当我不知道键在哪里时,如何找到具有某个唯一名称值的哈希?(所以我必须搜索所有哈希 -我知道非常糟糕) - 例如,将字段 color: blue 添加到我拥有唯一 name: f-377 的哈希中

【问题讨论】:

【参考方案1】:

我建议您创建附加哈希,该哈希将包含所有这些唯一值并映射到长名称。也就是自己的索引。

所以你需要创建新的哈希,遍历所有现有的键并添加字段(每个键一个)。并且将来当您需要创建新键时 - 您也需要将新字段添加到索引哈希中。 在这个索引哈希中搜索 - O(1),你能得到的最好的。

【讨论】:

很遗憾,我不是控制这些数据原始传播的人。 所以这很糟糕。搜索所有键非常昂贵 - O(n),没有其他方法可以比添加新索引结构更快地找到您请求的对象。如果可能的话,您可以使用 Lua 脚本 redis.io/commands/eval 与传播数据的其他人签订更严格的合同。您可以像使用 SQL 数据库中的存储过程一样使用它们。

以上是关于如何根据散列中的键/值查找键/值数据并将其添加到 Redis 中的散列?的主要内容,如果未能解决你的问题,请参考以下文章

散列表

如何解压缩数据框列中存在的 json 的键,值将转换为键作为列,而使用 python 将其值转换为列?

Java HashMap原理

如何交换散列中的键和值

Java中的Hashtable如何根据值获取键?

PSQL - 查找所有值并根据另一列中的非唯一值使其唯一