【问题标题】:What is the right way to read a zset in a redis cluster with an open-ended max bound with lettuce?在 redis 集群中读取 zset 的正确方法是什么?
【发布时间】:2020-05-05 07:55:49
【问题描述】:

我使用ZADD 命令将一堆ID 及其对应的分数插入到redis 实例中。分数基本上是调用ZADD 的时间戳。

现在我想检索分数大于五分钟前的时间戳的 ID 列表。

客户端是用java编写的,我使用lettuce作为redis客户端库。

我有几个问题:

  1. 这里是redis网站上zrangebyscore的文档链接(https://redis.io/commands/zrangebyscore)。然而,在生菜网站上,对应物被标记为“已弃用”。是文档不符,还是 lettuce 不再支持此 API?

  1. 我希望能够检索分数大于某个数字N的ID列表,但我不在乎高端。

在 lettuce 的文档中,this API zrange 似乎非常适合我的目的。但是,我可以用什么来表达我不关心上限?文档对此并不清楚。

【问题讨论】:

  • 上限可以大于集合中可用的分数。您可以使用 Long.MAX_VALUE 作为上限或当前时间戳,因为您的分数基于时间戳。您可以使用以 Range 作为参数的 zrangebyscore 方法

标签: redis lettuce


【解决方案1】:

Redis zrange 命令是一个基于零索引的命令。这意味着索引从 0 开始,并随着您添加新元素而递增。这里有帮助的是您可以通过指定负索引 -1 来检索最后一个索引,通过指定 -2 来检索倒数第二个等等。在 redis 网站here 上查看有关 zrange 的更多详细信息。

要检索整个范围,您可以运行

zrange keyname 0 -1

请注意,“0”可以替换为任何索引,这意味着上述命令将从该索引位置开始获取一个值。因此,这不能直接用于获得高于特定分数的所有值。

要从特定分数 N 中检索,请使用

zrangebyscore keyname N +inf

Here 是自 Lettuce 4.3 起可用的 zrangebyscore 的正确 Lettuce API

【讨论】:

    猜你喜欢
    • 2017-12-25
    • 2011-06-07
    • 1970-01-01
    • 1970-01-01
    • 2019-06-05
    • 2015-06-05
    • 1970-01-01
    • 1970-01-01
    • 2013-11-29
    相关资源
    最近更新 更多