Redis 多键取值(按键乘法搜索)

Redis multiple key for value (multiplying search by keys)

我卡住了。 我在处理一个实体时遇到问题,我想将它保存到 Redis,但是一段时间后 我想获取这个实体,但我不知道会用什么样的查询来搜索它。

所以,我需要将几个键保存到 Redis 中。我将能够通过多个查询来搜索我的实体。

例如, 我有一个实体:

public class Book
{
  int Id,
  string Name
}

有一次,我想按 ID 搜索此实体,在另一种情况下,我想按名称搜索。

你有什么建议或者解决方法吗? 也许,我可以使用标签 或类似的东西。

非常感谢!!!

Redis 不像常规的基于 table 的数据库服务器;你不能随意搜索。如果你希望能够通过 id 搜索某些东西,那么你需要 通过 id 手动索引 - 大概是通过 "hash" 或类似的从键值到主要项目密钥(无论您存储的是主要项目)。

如果你想要 方便 处理这类事情,也许可以看看 RediSearch - Redis 的一个可选模块,它简化了这种情况,同时提供了搜索选项提名的成员。您的图书对象在重新研究命名法中将变为 "documents"。

是的,我找到了答案。 在 Redis 中,您可以使用值的字典。 因此,在这个问题之后,我们必须使用 Key & Value 来保存数据,在 Value 中我们将再次拥有 Key & Value。

然后您将通过两个键获取值。

因此,您将拥有类似的东西

HSET myhash field1 "Hello"

官方网站上的更多信息 (https://redis.io/commands/hset)

如果我们谈论性能,这意味着我们有时间复杂度:O(N),其中 N 是所有给定集合中元素的总数。

遵循这些规则: O(n) 次

1. Traversing an array
2. Traversing a linked list
3. Linear Search
4. Deletion of a specific element in a Linked List (Not sorted)
5. Comparing two strings
6. Checking for Palindrome
7. Counting/Bucket Sort and here too you can find a million more such examples.... In a nutshell, all Brute Force Algorithms, or Noob ones which require linearity, are based on O(n) time complexity

所以,这意味着对元素的最终访问时间大约等于: O(n) + O(m);