如何使用Redis ZRANGEBYLEX模仿自动完成搜索?

 mobiledu2502927267 发布于 2023-01-07 16:30

我正在尝试创建一个简单的自动完成系统,就像这里的演示:http://autocomplete.redis.io/但由于某种原因我无法让它ZRANGEBYLEX返回正确的结果.这是我在Redis CLI上所做的事情:

> zadd autocomplete 0 one 0 two 0 three 0 four 0 five 0 six 0 seven 0 eight 0 nine 0 ten 0 eleven 0 twelve 0 thirteen 0 fourteen 0 fifteen

我的设置很好看:

> zrangebylex autocomplete - +
1) "eight"
2) "eleven"
3) "fifteen"
4) "five"
5) "four"
6) "fourteen"
7) "nine"
8) "one"
9) "seven"
10) "six"
11) "ten"
12) "thirteen"
13) "three"
14) "twelve"
15) "two"

如果我这样使用ZRANGEBYLEX结果是有道理的:

zrangebylex autocomplete [e [eight
1) "eight"

但是如果我想要获得以"e" 开头的集合中的所有项目,我会尝试这个(这与自动完成演示显示的内容非常相似),但它不会返回正确的结果:

> zrangebylex autocomplete [e [e(0xff)
(empty list or set)

必须使用什么作为ZRANGEBYLEX命令的参数才能匹配任何以"e"开头的字符串以及之后的任何其他字符串?

1 个回答
  • 这样就可以了:

    127.0.0.1:6379> zrangebylex autocomplete [e "[e\xff"
    1) "eight"
    2) "eleven"
    

    编辑:在他的评论中低于伊塔马尔哈伯如前所述,使用客户端的代码时,你就不会需要引号.

    2023-01-07 16:32 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有