2017-01-31 84 views
0

我在我的Redis数据存储中有非常多的密钥,所有这些密钥都有任意长的任意十六进制文本的长名称。如何根据散列中的键/值在Redis中查找并添加键/值数据到散列?

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

当我不知道密钥的位置时,如何找到具有某个唯一名称值的散列?(所以我要通过我的所有哈希本的搜索 - 非常糟糕,我知道) - 例如,现场color: blue添加到我有独特的哈希name: f-377

回答

1

我会建议你创建另外的哈希会包含所有这些具有长名称映射的唯一值。又名自己的索引。所以你需要创建新的散列,去掉所有存在的键并添加字段(每个键一个)。未来当您需要创建新密钥时 - 您需要将新字段添加到索引散列中。 在这个索引中搜索hash - O(1),你可以得到最好的结果。

+0

不幸的是,我不是控制这些数据原始传播的人。 –

+0

所以这是不好的。搜索所有密钥非常昂贵 - O(n),没有其他方法可以比添加新的索引结构更快地找到您请求的对象。如果可能的话,您可以使用Lua脚本https://redis.io/commands/eval与传播数据的其他人签署更严格的合同。你可以像SQL数据库中的存储过程一样使用它们。 – iMysak

相关问题