我正在尝试创建一个简单的自动完成系统,就像这里的演示: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"开头的字符串以及之后的任何其他字符串?
这样就可以了:
127.0.0.1:6379> zrangebylex autocomplete [e "[e\xff" 1) "eight" 2) "eleven"
编辑:在他的评论中低于伊塔马尔哈伯如前所述,使用客户端的代码时,你就不会需要引号.