【问题标题】:How to search in Redis?如何在 Redis 中搜索?
【发布时间】:2011-09-29 23:23:23
【问题描述】:

在 MySQL 中,我有一个名为:

cities 包括 2 列:namepopulation

然后我得到搜索结果:

SELECT * FROM cities WHERE name LIKE '%Bu%' ORDER by population DESC LIMIT 2

我得到了结果BucharestBudapest

如何在 Redis 中执行此操作?我的意思是如何创建类似的结构,然后如何搜索值?

【问题讨论】:

标签: string search redis


【解决方案1】:

我认为您需要对键值存储的工作原理进行更多研究,但是为了将您的帖子用作过度简化的示例,一个方法是让您创建所有值的键,然后创建与这些键匹配的索引,例如:

SET c1 "Bucharest"
SET c3 "Budapest"
SADD city:bu c1
SADD city:bu c3
SMEMBERS city:bu

=> ["c1","c3"]

您可以使用:http://try.redis-db.com/ 进行试用。

将其扩展为 3 个字符搜索:

SADD city:buc c1
SMEMBERS city:buc

=>["c1"]

有很多方法可以解决这个问题,包括可以为索引分配排名的方法等。另请注意,此示例与引用的 example 方法不同,但更容易理解 - 类似给一个使用过的here

【讨论】:

  • 嗨。我需要存储多个一二多值,其中每个“多”可能附加一个附加字符串值。我需要能够通过其子字符串值找到父项,并通过包含、开头等提供有效的搜索。 1) Redis 是一个好的选择吗? 2) 任何其他想法(最好是 MIT/BSD/Apache 许可)?谢谢!
  • 嗨@Shimmy - 这可能不是正确的论坛,因为这是一个非常广泛的问题,包含许多特定于应用程序的问题。您可以通过设置自己的索引(如this)来使用 Redis,但从您的简短描述来看,您似乎并不精通 Redis,可能不是最佳选择。查看具有本机文本搜索的数据库,范围从文档存储 (~MongoDB)、RDBMS、多模型数据库到 Lucene/Solr——或其中的一些组合,以及其他!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-05-08
  • 1970-01-01
  • 2019-01-30
  • 1970-01-01
  • 2016-06-21
  • 1970-01-01
相关资源
最近更新 更多