2012-07-31 66 views
0

說我有一個能夠讓用戶互相交友,我有一個顯示用戶朋友的小部件。這是Redis的一個很好的用例嗎?

這裏Redis會用來通過user.id存儲關係嗎?

1,2 
1,5 
4,1 
3,1 

1.friends -> 2, 3, 4, 5 

但是,那麼我需要爲這些朋友提取細節。我是否有權假定這將使用查詢"id IN(2,3,4,5)"?

回答

2

你可以絕對使用redis來表示這些數據。一種策略是對每個用戶的詳細信息使用一個散列,由用戶標識(例如user:1 => {'name': 'foo', 'email': '[email protected]'})和一組用戶關係的用戶標識(例如user:1:friends => (2, 3, 4, 5))。你是對的,你需要爲每個用戶做一個hgetall user:<ID>朋友設置爲獲取該用戶的信息。 HGETALL是O(N),其中N是場的數量;對於像字段數量小(相對)固定的用戶對象,HGETALL實際上是O(1),所以額外的查找並不是非常昂貴。您也可以使用redis管道批量查找並最大限度地減少網絡開銷。

+0

非常感謝。你給了我很多考慮和研究。 – 2012-07-31 16:52:24

相關問題