2009-11-23 26 views
1

Je pense utiliser redis (http://code.google.com/p/redis/) pour stocker ce type de structure de données ruby.Comment modéliser cette structure de rubis en rouge

Supposons que ce:

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 } 

Quel est le meilleur type de données de Redis à utiliser?

Les données doivent être mises à jour, et j'ai besoin de trier les valeurs de node1server1 + node1server2 et node2server1 + node2server2.

Répondre

1

Je peux voir que cela fait un moment que vous avez posté, mais pouvez-vous fournir un peu plus d'informations sur la façon dont les données devraient être triées?

En outre, je suppose ci-dessous qu'il peut y avoir un nombre variable de volumes par serveur, et un nombre variable de serveurs par noeud

Une façon de le faire est la suivante:

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") 

Alors pour obtenir une liste triée de tous les numéros de volumes pour node1:

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

... qui trierait par les valeurs attribuées à chaque nœud et une version triée de node_id: 1: volumes.

Alternativement, vous pouvez utiliser le Zset qui est nouveau dans Redis 1.1

Notez également que je l'ai utilisé ici SETs, plutôt que LISTs. Je trouve que les listes sont plus utiles pour les structures décrites en termes de files d'attente et de piles, et les SET sont meilleurs pour les listes d'éléments uniques.

Références: