3

赤ではハッシュを使用しています。複数のフィールドと値を持つハッシュ キーを保存する必要があります。私は以下のように試しました:

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);
client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);
var arrrep = new Array();

client.hgetall("Table1", function(err, rep){
 console.log(rep);
});

出力は次のとおりです。{ Id: '9324325', ReqNo: '23432' }

私は1つの値しか取得していません。ハッシュキーのすべてのフィールドと値を取得する方法は? 私が間違っている場合は親切に助けてください。コードを取得させてください。ありがとう。

4

1 に答える 1

6

前の値をオーバーライドするため、1つの値を取得しています。

client.hmset("Table1", "Id", "9324324", "ReqNo", "23432", redis.print);

これにより、Id、ReqNoがTable1ハッシュオブジェクトに追加されます。

client.hmset("Table1", "Id", "9324325", "ReqNo", "23432", redis.print);

これは、Table1ハッシュオブジェクトのIdとReqNoをオーバーライドします。この時点では、ハッシュには2つのフィールドしかありません。

実際、問題は、リレーショナルデータベースモデルをRedisにマッピングしようとしているという事実から生じます。貴方はするべきではない。Redisでは、データ構造とアクセスパスの観点から考える方がよいでしょう。

レコードごとに1つのハッシュオブジェクトを保存する必要があります。例えば:

HMSET Id:9324324 ReqNo 23432 ... and some other properties ...
HMSET Id:9324325 ReqNo 23432 ... and some other properties ...

次に、セットを使用してIDを保存できます。

SADD Table1 9324324 9324325

最後に、Table1コレクションに関連付けられているReqNoデータを取得するには:

SORT Table1 BY NOSORT GET # GET Id:*->ReqNo

特定のReqNoに関連付けられているすべてのIDも検索する場合は、このアクセスパスをサポートするための別の構造が必要です。

SADD ReqNo:23432 9324324 9324325

したがって、次を使用して、レコード23432のIDのリストを取得できます。

SMEMBERS ReqNo:23432

言い換えれば、リレーショナルモデルを転置しようとしないでください。ユースケースをサポートする独自のデータ構造を作成するだけです。

于 2012-10-08T14:35:18.040 に答える