3

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

+-------------+--------------------------------+
|     key     |             value              |
+-------------+--------------------------------+
| book:1:tags |     [python, ruby, rails]      |
+-------------+--------------------------------+
| book:2:tags |     [fiction, fantasy]         |
+-------------+--------------------------------+
| book:3:tags |     [fiction, adventure]       |
+-------------+--------------------------------+

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

4

1 回答 1

5

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

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

tag:fiction => [2, 3]
tag:fantasy => [2]
tag:adventure => [3]

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

于 2012-07-20T18:43:50.217 回答