Redis多重键值(按键乘以搜索)

时间:2017-11-23 12:51:03

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

我刚刚被卡住了。 我在使用实体时有一个问题,我想将它保存到Redis,但过了一段时间我想得到这个实体,但我不知道会搜索哪种查询。

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

例如, 我有一个实体:

public class Book
{
  int Id,
  string Name
}

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

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

非常感谢!!!

2 个答案:

答案 0 :(得分:1)

Redis不像常规的基于表的数据库服务器;你无法任意搜索。如果你想能够通过id搜索某些东西,那么你需要手动索引id - 大概是通过" hash"从键控值到主项目键的类似物(但是你存储主要项目)。

如果您想要方便这类事情,可以查看RediSearch - redis的可选模块,它可以简化此类方案,同时提供针对指定成员的搜索选项。你的书籍对象将成为"文件"在redisearch命名法中。

答案 1 :(得分:0)

是的,我找到了答案。 在Redis中,您可以使用值的词典。 因此,在此问题之后,我们必须使用Key& amp;价值,在价值内我们将再次拥有Key&值。

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

结果,你会有类似的东西

  

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