2009-11-23 10 views
1

Я думаю использовать redis (http://code.google.com/p/redis/) для хранения такого рода структуры данных ruby.Как смоделировать эту рубиновую структуру в 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") 

Так чтобы получить отсортированный список всех номеров томов для node1:

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

... который будет сортировать значения, назначенных каждый узел и отсортированную версию node_id: 1: объемы.

В качестве альтернативы, вы можете использовать ZSET который является новым в Redis 1.1

Также обратите внимание, что я использовал НАБОРЫ здесь, а не СПИСКИ. Я нахожу, что LISTs более полезны для структур, описанных в терминах очередей и стеков, а SETs лучше для списков уникальных элементов.

Ссылки: исследование