如何在Redis中进行搜索?

3
在MySQL中,我有一个名为 cities 的表格,包括两个列:namepopulation。然后我使用以下语句获取搜索结果: SELECT * FROM cities WHERE name LIKE '%Bu%' ORDER by population DESC LIMIT 2 我得到的结果是 BucharestBudapest。那么在Redis中该如何实现呢?我的意思是如何创建类似的结构,并进行值的搜索?

请参考以下链接了解如何在Redis中搜索字符串:https://dev59.com/xmw15IYBdhLWcg3wxurL - ldg
@ldg 我明白,但对于这个问题,没有答案可以帮助我理解 Redis 是如何工作的。 - Adam Halasz
1个回答

7

我认为您需要对键值存储的工作原理进行更多研究,但是以您的帖子作为过度简化的例子,一种实现方式是您可以为所有值创建键,并创建与这些键匹配的索引,例如:

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

=> ["c1","c3"]

您可以使用:http://try.redis-db.com/ 来尝试一下。

如果要扩展到三个字符搜索:

SADD city:buc c1
SMEMBERS city:buc

=>["c1"]

有许多方法可以解决这个问题,包括可以给你的索引分配等级的方法等。另外请注意,这个例子是一种不同的方法,与这个例子不同,但更容易理解——它类似于这里使用的方法。


嗨。我需要存储多个一对多的值,其中每个“多”可能附加有一个字符串值。我需要能够通过其子字符串值找到父项,并通过包含、以...开头等方式进行高效搜索。 1)Redis是一个好选择吗?2)还有其他想法(最好是MIT/BSD/Apache许可)?谢谢! - Shimmy Weitzhandler
嗨@Shimmy - 这可能不是正确的论坛,因为这是一个非常广泛的问题,涉及到很多应用程序特定的问题。您可以像这样设置自己的索引来使用Redis,但从您的简要描述中看来,您可能不熟悉Redis,这可能不是最好的选择。查看具有本地文本搜索功能的数据库,包括文档存储(~MongoDB)、RDBMS、多模型数据库、Lucene/Solr或一些混合体,以及其他! - ldg

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接