我有一个存储在 redis 中的集合,如下所示:
127.0.0.1:6379> zrange my_set 0 -1
1) "ABC20180108131627044829:XYZ20180108131627044857"
2) "ABC20180108131627044829:XYZ20180108131627044858"
3) "ABC20180108131627044829:XYZ20180108131627044859"
4) "ABC20180108131627044830:XYZ20180108131627044830"
5) "ABC20180108131627044830:XYZ20180108131627044831"
它们是使用
添加到集合中的ZADD my_set 0 ABC20180108131627044829:XYZ20180108131627044857
ZADD my_set 0 ABC20180108131627044829:XYZ20180108131627044858
ZADD my_set 0 ABC20180108131627044829:XYZ20180108131627044859
ZADD my_set 0 ABC20180108131627044830:XYZ20180108131627044830
ZADD my_set 0 ABC20180108131627044830:XYZ20180108131627044831
我想我可以使用以下方法取回所有包含 ABC20180108131627044829 的项目,但我在这里得到一个空列表。
127.0.0.1:6379> ZRANGEBYLEX my_set - [ABC20180108131627044829
(empty list or set)
最佳答案
您正在寻找自动完成行为。这是一个 ZRANGEBYLEX
查询,它将只为您提供以字符串开头的元素:
ZRANGEBYLEX my_set [STRING [STRING\xff
以你的例子为例:
ZRANGEBYLEX my_set [ABC20180108131627044829 [ABC20180108131627044829\xff
1) "ABC20180108131627044829:XYZ20180108131627044857"
2) "ABC20180108131627044829:XYZ20180108131627044858"
3) "ABC20180108131627044829:XYZ20180108131627044859"
注意,所有分数必须相等。
关于Redis - ZRANGEBYLEX 返回空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48191464/