如何在redis中获取特定范围内的索引键?

How to get indexed keys on a specific range in redis?

使用redis,假设我有这些带有索引的键:

user1:0
user1:1
user1:2
user1:3
user1:4
user2:0
user2:1
user2:2

我如何从索引 1-3 中获取比方说用户 1 的密钥?所以,这些是我想要的结果:

user1:1
user1:2
user1:3

我尝试了这些命令并得到了空结果:

LRANGE user1:* 1 4
SCAN user1:* CURSOR 1 COUNT 3

另一个问题:将索引保存为二级键中的元素对我来说会更好吗?

通过阅读 LRANGE 的文档,似乎获取项目的正确方法是(假设您使用 RPUSH 制作索引):

redis> RPUSH user1 "one"
redis> RPUSH user1 "two"
redis> RPUSH user1 "three"
redis> RPUSH user1 "four"
redis> LRANGE user1 1 4
1) "one"
2) "two"
3) "three"
4) "four"

source

您错误地使用了 SCAN 命令。

SCAN 0 MATCH user1:[1-3]

查看 doc 了解详细信息。

Another question: will it be better for me to save the index as an element in the secondary key?

是的,您可以为匹配模式的键构建二级索引,或者尝试redisearch。当您的数据集很大时,SCAN 效率低下。