Redis可以做前缀匹配吗?

jdo*_*oig 6 redis

可以说我世界上有一套城市是这样的:

EUKLOND
EUKMANC
EUKEDIN
EITROME
EITMILA
EITNAPE
EFRPARI
EFRAVIG
EFRBRES
Run Code Online (Sandbox Code Playgroud)

如果第一个字母是大陆,则下两个是国家,后4个是缩写的城市名称.

我希望能够通过传入"E"来搜索这个集合,它将返回所有条目或EIT并检索意大利或EFRPARI的所有条目并获得巴黎条目.

这是我可以用Redis做的吗?

Ofe*_*lig 14

通常,它是自动完成方案.

Redis的作者Salvatore Sanfilippo(@Antirez)撰写了一篇关于如何实现这一目标的完整博客文章.

更新:我刚刚看到另一篇很棒的博客文章,首先采用Salvatore的解决方案,并以清晰的方式解释它,其次提供了另一个对多词短语也很好的解决方案.

  • 您应该以与关系数据库或专用搜索服务器不同的方式来考虑Redis.这很快,你必须意识到重复查询是绝对可以的 - 它仍然比任何其他东西快得多.例如,每次重复50次,直到你发现你超出你的范围,在Redis中完全没问题.我花了一些时间来摆脱"经典"的习惯和思想. (2认同)