gpt4 book ai didi

redis - 排序集上的 redis zscan 是否应该返回按分数顺序排序的结果?

转载 作者:IT王子 更新时间:2023-10-29 06:00:49 25 4
gpt4 key购买 nike

对于我正在处理的应用程序,我正在考虑使用 Redis 中的排序集来存储项目,其中时间戳作为分数,任意消息作为成员。然后我计划使用 zscan 来按顺序从排序集中检索项目。顺序对应用程序很重要,这就是我要使用排序集的原因。

事情似乎进展顺利,直到我尝试使用 zscan 检索项目并且它们似乎出现故障。例如,我设置了一个测试,其中我使用整数值作为分数并将字符串表示形式作为成员(为简洁起见省略了初始化),将 1000 个项目添加到排序集中:

    for( int i = 0; i < 1000; i++){
jedis.zadd(CHANNEL, i, Integer.toString(i));
}

ScanResult<Tuple> result = jedis.zscan("TEST_CHANNEL", "0", new ScanParams().count(10));

我取回的元素似乎是随机排列的。使用 redis-cli 运行 zscan 确认了测试发现的相同结果:

127.0.0.1:6379> zscan "TEST_CHANNEL" 0

返回结果125、588、568、144......

从 0 到 10 的 zrange 正确地返回了从“0”到“10”的成员。

我试过查看文档 ( http://redis.io/commands/zscan ),但我找不到任何东西来确认 zscan 是否应该或不应该按分数顺序返回结果,我希望有人能弄清楚我是否看到了错误、预期的行为,或者只是简单地做错了。

我正在使用 Redis 3.0.1

最佳答案

[HSZ]SCAN 命令系列的回复顺序基于 Redis 使用的内部数据结构,其顺序由多个因素决定,但最重要的是对数据。排除工程测试和随机巧合 - 无序回复是预期行为。

关于redis - 排序集上的 redis zscan 是否应该返回按分数顺序排序的结果?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30086924/

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