Redis 获取有至少一个成员得分小于N的已排序集的键

我在redis中有多个已排序集。它们的键具有以下模式:

user:{userId}:data

其中userId是实际值。 相应集合的每个成员的分数等于添加该成员时的时间戳。 现在我正在试图找出如何检索redis键,其中至少有一个成员在特定时间戳之前被添加(这意味着至少有一个成员的分数小于给定的时间戳(以毫秒计)).

我可以通过模式检索所有键:

KEYS 'user:*:data'

实际上,我可以使用以下命令检查一个键所需的条件:

ZRANGEBYSCORE user:{userId}:data -inf {timestamp}

然后检查返回数据的大小

但是我有没有办法(一行代码、管道命令或使用Lua脚本)仅获取那些具有低分数元素的已排序集的键?

点赞
用户3160475
用户3160475

如果此查询很重要(即需要快速返回),我会避免使用KEYSSCAN。相反,要使用另一个排序集合,其中包含每个用户的最早时间戳,并进行查询。

2018-07-20 11:14:43