Redis ZRANGEBYLEX匹配二级索引

时间:2019-12-07 04:00:47

标签: redis

我为每个用户都有一个代表他们当前得分的索引。 我想找到所有分数相同的用户。

假设输入如下,我如何仅检索用户1和2?

ZADD users 0 1:10
ZADD users 0 2:10
ZADD users 0 3:5

我希望做类似docs中提到的操作,但是由于该键太大,因此我不能使用该键作为索引(对于我更改为1,2,3的帖子,所以这不是问题),这就是为什么我将其设置为0。

我认为该命令可能类似于ZRANGEBYLEX users [0:10 (:10,但返回的全部为3。

1) "1:10"
2) "2:10"
3) "3:5"

1 个答案:

答案 0 :(得分:0)

我能够针对此问题提出解决方案,可以进一步完善为:

检索具有给定分数的所有用户,或为单个用户检索单个分数。

我确定的是,使用名称空间ZADD score:users 0 10:1 ZADD score:users 0 10:2 ZADD score:users 0 5:3 ZADD users:score 0 1:10 ZADD users:score 0 2:10 ZADD users:score 0 3:5 ZRANGEBYLEX users:score [1: [1:\xff # "1:10" ZRANGEBYLEX score:users [10: [10:\xff # "10:1" "10:2" 对于得分和用户ID都不是足够的描述符。当使用2个不同的键时,很明显可以得到一个范围或单个值。缺点是我希望的写入量的两倍,但这对我来说并没有太多的开销,这是我发现可以正确检索分数和用户的唯一方法。

[]