Redis:根据匹配的关键字查询

时间:2018-01-09 00:44:23

标签: redis

我是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:*

有没有办法让所有类别都这样?

1 个答案:

答案 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