gpt4 book ai didi

redis - Redis Sorted Set ZSCAN项目顺序

转载 作者:行者123 更新时间:2023-12-03 06:41:16 24 4
gpt4 key购买 nike

我在Redis中有一个带有时间戳的排序集合,并且与集合的不同类型的关系存储在一起。

示例数据集说明如下:

zadd s1 10 rel1:val1  
zadd s1 15 rel1:val2
zadd s1 12 rel1:val3

zadd s1 10 rel2:v1
zadd s1 12 rel2:v2
zadd s1 5 rel1:v3

我正在从集合中寻找rel1或rel2的顶级元素,如果我尝试单独存储它们,我将以许多键结尾,这是我想要避免的。

我尝试了ZSCAN,结果按评分升序排列,如下所示
localhost:6379> zscan s1 0 match "rel1*" count 10
1) "0"
2) 1) "rel1:v3"
2) "5"
3) "rel1:val1"
4) "10"
5) "rel1:val3"
6) "12"
7) "rel1:val2"
8) "15"

如果我在-ive中记下时间戳,则得到的结果将是预期的顶级元素
localhost:6379> zadd s1 -10 rel1:val1
(integer) 0
localhost:6379> zadd s1 -20 rel1:val2
(integer) 0
localhost:6379> zadd s1 -30 rel1:val3
(integer) 0
localhost:6379> zscan s1 0 match "rel1*" count 10
1) "0"
2) 1) "rel1:val3"
2) "-30"
3) "rel1:val2"
4) "-20"
5) "rel1:val1"
6) "-10"
7) "rel1:v3"
8) "5"

我的问题是我可以继续讨论此结果,并相信ZSCAN的结果始终按升序排列。

我不能使用ZREVRANGE或ZRANGE命令,因为我必须通过匹配成员来获得前n个项目。

最佳答案

没有。您不能依靠它。顺序是不确定的。

众所周知,ZSET是通过dict / hash和一个跳过列表实现的。 ZSCAN命令将扫描字典,而不是跳过列表。由于dict是无序的,因此扫描结果的顺序是不确定的。

关于redis - Redis Sorted Set ZSCAN项目顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61128710/

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