Redis根据设定值查找密钥

zsq*_*are 3 redis

我使用redis存储某些实体的标签.数据示例:

+-------------+--------------------------------+
|     key     |             value              |
+-------------+--------------------------------+
| book:1:tags |     [python, ruby, rails]      |
+-------------+--------------------------------+
| book:2:tags |     [fiction, fantasy]         |
+-------------+--------------------------------+
| book:3:tags |     [fiction, adventure]       |
+-------------+--------------------------------+
Run Code Online (Sandbox Code Playgroud)

如何找到所有带有特定标签的书籍,即所有标有fiction?的书籍?

Ser*_*sev 5

您必须自己维护反向索引.除了您发布的那些键,您还应该创建反向引用.

tag:python => [1]
tag:ruby => [1]
tag:rails => [1]

tag:fiction => [2, 3]
tag:fantasy => [2]
tag:adventure => [3]
Run Code Online (Sandbox Code Playgroud)

然后做你想做的事是微不足道的.但也许你应该考虑使用另一种工具来完成这项工作.例如,MongoDB可以有效地索引和查询数组.