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

user:{userId}:data

其中userid是实际值。
对应集合的每个成员的得分都等于添加时的时间戳。
现在我试图找出如何为那些排序集检索redis键,其中至少有一个成员是在某个时间戳之前添加的(这意味着至少有一个成员的得分小于给定的时间戳(以毫秒为单位)。
我可以按模式检索所有密钥:
KEYS 'user:*:data'

实际上,我可以使用命令检查一个键的所需条件:
ZRANGEBYSCORE user:{userId}:data -inf {timestamp}

然后检查返回数据的大小
但是,我是否有任何方法(一行、管道命令或使用lua脚本)只获取排序集中至少有一个元素得分低于给定值的键?

最佳答案

如果此查询很重要(即需要快速返回),我将避免KEYS,或SCAN。相反,使用每个用户拥有的最早时间戳保存另一个排序集,并对其进行查询。

关于lua - Redis获取排序集的 key ,其中至少有一个成员的得分小于N.,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51426053/

10-12 17:27
查看更多