2009-11-23 44 views
1

我在想用redis(http://code.google.com/p/redis/) 來存儲這種紅寶石數據結構。如何在redis中建立這個紅寶石結構

假設這樣的:

node1server1 = { "volume1" => 10400, "volume2" => 11221, "volume3" => 13212, "volume4" => 17227 } 
node1server2 = { "volume1" => 17450, "volume2" => 14241, "volume3" => 15512, "volume4" => 12427 } 

node2server1 = { "volume1" => 17655, "volume2" => 16754, "volume3" => 19877, "volume4" => 10000 } 
node2server2 = { "volume1" => 11456, "volume2" => 13776, "volume3" => 18766, "volume4" => 16555 } 

什麼是使用更好redis的數據類型?

數據需要更新,我需要排序node1server1 + node1server2和node2server1 + node2server2的值。

回答

1

我可以看到它已經有一段時間,因爲你張貼,但你可以提供更多關於如何排序數據的信息?

另外,我認爲波紋管,有可能是每個服務器卷的變量數,以及每個節點的服務器數量可變的

一種方式做到這一點如下:

node_id:1:server_id:1:volume_id:1 = 10400 
node_id:1:server_id:1:volume_id:2 = 11221 
node_id:1:server_id:1:volume_id:3 = 13212 
node_id:1:server_id:1:volume_id:4 = 17227 
node_id:1:server_id:2:volume_id:1 = 17450 
node_id:1:server_id:2:volume_id:1 = 14241 
... 
node_id:1:volumes = SET("server_id:1:volume_id:1", "server_id:1:volume_id:2", "server_id:1:volume_id:3", "server_id:1:volume_id:4", "server_id:2:volume_id:1", "server_id:2:volume_id:2", "server_id:2:volume_id:3", "server_id:2:volume_id:4") 

所以讓所有卷號的排序列表爲節點1:

SORT node_id:1:volumes BY node_id:1:* 

...這將被分配給每個節點和NODE_ID的排序版本的值進行排序:1:卷。

或者,你可以使用ZSET這是Redis的1.1

新還要注意,我在這裏用套,而不是名單。我發現LIST對於按隊列和堆棧方式描述的結構更有用,SET對於獨特項目列表更好。

參考文獻: