【问题标题】:Redis multiple key for value (multiplying search by keys)Redis 多键取值(按键相乘)
【发布时间】:2018-05-07 10:46:17
【问题描述】:

我刚刚被卡住了。 我在处理实体时遇到问题,我想将其保存到 Redis,但一段时间后我想获取此实体,但我不知道将搜索哪种查询。强>

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

例如, 我有一个实体:

public class Book
{
  int Id,
  string Name
}

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

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

非常感谢!!!

【问题讨论】:

    标签: c# asp.net asp.net-mvc-4 caching redis


    【解决方案1】:

    Redis 不像常规的基于表的数据库服务器。你不能随意搜索。如果您希望能够通过 id 搜索某些内容,那么您需要按 id 手动索引 - 大概是通过从键值到主项目键的“哈希”或类似的(但是您正在存储主要项目)。

    如果您希望 方便 处理这类事情,不妨看看 RediSearch - redis 的一个可选模块,它简化了这类场景,同时提供了针对指定成员的搜索选项。您的图书对象将成为重新搜索命名法中的“文档”。

    【讨论】:

      【解决方案2】:

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

      然后你将通过两个键获得Values。

      结果,你会得到类似的东西

      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);

      【讨论】:

        猜你喜欢
        • 2012-04-26
        • 1970-01-01
        • 2019-07-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-06-03
        • 1970-01-01
        • 2013-02-05
        相关资源
        最近更新 更多