基于集合值查找 Redis 的键

3

我正在使用Redis存储特定实体的标签。以下是数据示例:

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

我该如何查找所有带有特定标记的书籍,例如所有标记为fiction的书籍?

1个回答

5

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

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

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

那么你想要做的事情就很简单了。但也许你应该考虑使用另一个工具完成这个任务。例如,MongoDB 可以高效地索引和查询数组。


我已经在Stack Overflow上发布了一个类似的关于mongodb的问题:http://stackoverflow.com/questions/11585655/book-tagging-with-mongodb-many-to-many-implementation,如果您能够提供帮助。 - zsquare

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接