ZRANGEBYLEX查询返回相同金额char计数的不同结果

时间:2018-05-19 08:57:20

标签: redis lexical

我创建了这样的集合 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"

来自redis网站(https://redis.io/commands/zrangebylex)的

另一个

2) "banahhh:1"如何列为第二名。它不能在结果中显示或我遗漏了什么

ZRANGEBYLEX myindex "[banana:" + LIMIT 1 10 1) "banana:123" 2) "banahhh:1" 3) "banned user:49" 4) "banning:89"

注意:我注意到它会对添加的项目进行排序并根据排序的索引返回。我不知道

1 个答案:

答案 0 :(得分:0)

这是因为排序集中的元素具有相同的分数,并且您使用ZRANGEBYLEX命令。正如redis文件所说:

  

虽然相同的元素不能在排序集中重复,因为每个元素都是唯一的,所以可以添加具有相同分数的多个不同元素。 当多个元素具有相同的分数时,它们按字典顺序排序(它们仍按分数排序为第一个键,但是,在本地,所有具有相同分数的元素按字典顺序相对排序)。

你使用ZRANGEBYLEX命令,它只是将字符串与相同分数的限制进行比较。

  

如果排序集中的元素具有不同的分数,则返回的元素未指定。

因此,如果您的排序集具有不同的分数,则操作未指定。

如果您使用ZRANGE命令,它将首先比较分数,然后比较具有相同分数的字符串。

请参阅api文档以获取更多信息https://redis.io/commands/zrangebylex&& https://redis.io/commands/zrange

相关问题