我创建了这样的集合
ZADD myzset 0 baba 0 abab 0 aabb 0 bbaa 0 baab 0 abba
当我查询使用“aa”和“bb”关键字结果时,这样
代表“aa”
ZRANGEBYLEX myzset "[aa" +
1) "aabb"
2) "abab"
3) "abba"
4) "baab"
5) "baba"
6) "bbaa"
代表“bb”
ZRANGEBYLEX myzset "[bb" +
1) "bbaa"
为什么“bb”仅返回1但“aa”返回6
ZRANGEBYLEX myindex "[banana:" + LIMIT 1 10
1) "banana:123"
2) "banahhh:1"
3) "banned user:49"
4) "banning:89"
另一个
2) "banahhh:1"
如何列为第二名。它不能在结果中显示或我遗漏了什么
ZRANGEBYLEX myindex "[banana:" + LIMIT 1 10
1) "banana:123"
2) "banahhh:1"
3) "banned user:49"
4) "banning:89"
注意:我注意到它会对添加的项目进行排序并根据排序的索引返回。我不知道
答案 0 :(得分:0)
这是因为排序集中的元素具有相同的分数,并且您使用ZRANGEBYLEX命令。正如redis文件所说:
虽然相同的元素不能在排序集中重复,因为每个元素都是唯一的,所以可以添加具有相同分数的多个不同元素。 当多个元素具有相同的分数时,它们按字典顺序排序(它们仍按分数排序为第一个键,但是,在本地,所有具有相同分数的元素按字典顺序相对排序)。
你使用ZRANGEBYLEX命令,它只是将字符串与相同分数的限制进行比较。
如果排序集中的元素具有不同的分数,则返回的元素未指定。
因此,如果您的排序集具有不同的分数,则操作未指定。
如果您使用ZRANGE命令,它将首先比较分数,然后比较具有相同分数的字符串。
请参阅api文档以获取更多信息https://redis.io/commands/zrangebylex&& https://redis.io/commands/zrange