1

この種のルビーデータ構造を格納するには、redis ( http://code.google.com/p/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 の値を並べ替える必要があります。

4

1 に答える 1

1

投稿からしばらく経っているように見えますが、データの並べ替え方法についてもう少し情報を提供できますか?

また、サーバーごとに可変数のボリューム、およびノー​​ドごとに可変数のサーバーが存在する可能性があると仮定します

それを行う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:volumes のソートされたバージョンでソートされます。

または、Redis 1.1 で新しく導入された ZSET を使用できます。

また、ここでは LIST ではなく SET を使用していることにも注意してください。LIST はキューとスタックの観点から記述された構造に対してより有用であり、SET は固有の項目のリストに対してより優れていることがわかりました。

参考文献:

于 2009-12-14T14:58:02.523 に答える