我是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:*
有没有办法让所有类别都这样?
答案 0 :(得分:1)
使用SCAN。 SCAN是迭代Redis数据库中密钥的唯一安全方法。 SCAN会将一部分键空间分块并返回一个游标(总是第一个结果)以及它在该块中找到的任何值。你从光标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 categories 1 men
然后你可以使用HGETALL
)