2012-07-20 89 views
2

使用redis存储某些实体的标签。数据的例子:Redis根据设定值找到密钥

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

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

回答

3

你必须自己维护反向指标。除了您发布的那些密钥外,您应该创建反向引用。

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

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

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

+0

我发布了类似的问题mongodb:http://stackoverflow.com/questions/11585655/book-tagging-with-mongodb-many-to-many-implementation,如果你可以帮忙 – zsquare 2012-07-20 19:18:57