gpt4 book ai didi

redis - ZRANGEBYLEX 查询为相同数量的字符数返回不同的结果

转载 作者:可可西里 更新时间:2023-11-01 11:48:00 26 4
gpt4 key购买 nike

我创建了这样的集合ZADD myzset 0 baba 0 abab 0 aabb 0 bbaa 0 baab 0 abba

当我使用“aa”和“bb”关键字进行查询时,结果如下

对于“aa”

ZRANGEBYLEX myzset "[aa"+
1)“aab”
2) "abab"
3)“阿爸”
4)“巴布”
5)“爸爸”
6) “bbaa”

对于“bb”

ZRANGEBYLEX myzset "[bb"+
1)“bbaa”

为什么“bb”只返回 1 而“aa”返回 6

ZRANGEBYLEX myindex“[香蕉:”+ LIMIT 1 10
1)“香蕉:123”
2)“banahhh:1”
3)“被禁止的用户:49”
4)“禁止:89”

另一个 来自 redis 站点 ( https://redis.io/commands/zrangebylex )

2) "banahhh:1" 如何将其列为第二个。它不能显示在结果中,或者我错过了什么

ZRANGEBYLEX myindex“[香蕉:”+ LIMIT 1 10
1)“香蕉:123”
2)“banahhh:1”
3)“被禁止的用户:49”
4)“禁止:89”

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

最佳答案

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

While the same element can't be repeated in a sorted set since every element is unique, it is possible to add multiple different elements having the same score. When multiple elements have the same score, they are ordered lexicographically (they are still ordered by score as a first key, however, locally, all the elements with the same score are relatively ordered lexicographically).

而你使用 ZRANGEBYLEX 命令,它只是比较具有相同分数限制的字符串。

If the elements in the sorted set have different scores, the returned elements are unspecified.

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

如果使用ZRANGE命令,它会先比较分数,然后再比较分数相同的字符串。

更多信息请引用api文档https://redis.io/commands/zrangebylex && https://redis.io/commands/zrange

关于redis - ZRANGEBYLEX 查询为相同数量的字符数返回不同的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50423526/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com