2012-07-20 94 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