我是 Redis 的新手,我试图通过 Redis 文档找出这个问题,但没有成功。这是详细信息。
假设我插入了如下字符串。
Set category:1 "Men"
Set category:2 "Women"
Set category:3 "Kids"
Set category:4 "Home"
Set category:5 "shoes" ...
在这种情况下,我想通过查询遵循特定模式的键来获取所有值 category:*
。
Get category:*
有没有办法像这样获取所有类别?
最佳答案
使用SCAN . SCAN 是遍历 Redis 数据库中的键的唯一安全方法。 SCAN 将分块键空间的一部分并返回一个游标(总是第一个结果)和它在该 block 中找到的任何值。您从光标 0 开始。
> SCAN 0 MATCH "category:*"
1) "1904"
2) (empty list or set)
然后以相同的模式将该光标传递回 SCAN 命令:
> SCAN 1904 MATCH "category:*"
1) "0"
2) 1) "category:3"
2) "category:2"
3) "category:4"
4) "category:1"
在这种情况下,返回的光标是 0,这是 SCAN 命令已完成的信号。第二个响应是一个包含找到的键的数组。请注意,您需要循环运行 SCAN 命令,并且每次都不会返回与模式匹配的键或仅返回部分键。
获取键后,您需要像往常一样检索值 (GET)。
请注意:从您的数据结构来看,您可能使用了不合适的数据类型:将类别组织成散列会更好(例如 HSET 类别1 人
然后你可以使用 HGETALL
)
关于雷迪斯 : Querying based on matching key pattren,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48160030/