如何在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"
您错误地使用了 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
效率低下。
使用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"
您错误地使用了 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
效率低下。