1

Redisは、文字列を a の値に追加できますkey。通常のキーの代わりに、 a の値に追加する必要がありますHashfield。私は現在、明白な方法でそれを解決しています:

redis.HGET('hash', 'field2append', function(err, reply){
    redis.HSET('hash', 'field2append', reply + appendString);
});

セットアップには複数の物理 (node.js) サーバーのクラスターが含まれるため、ノードが値を受信して​​から再度設定するまでに時間がかかるため、上記の方法ではデータが失われる可能性があります (別のサーバーが同じフィールドを同時に更新している場合)。 .

appendの文字列へのより安全な方法はありvalueますhashfieldか?

4

3 に答える 3

2

はい。これは、トランザクション(パイプラインなど) を介して行うか、サーバー側ですべてのロジックを実行するLua スクリプトを介して行うことができます。Redis はシングル スレッドであるため、トランザクションまたは lua スクリプトを実行すると、終了するまで他のすべての実行がブロックされます。このようにして、あなたが言及した理由によるデータ損失が起こらないことを保証することができます.

于 2013-09-16T23:15:37.120 に答える
0

Redis はシングルスレッドのプロセスです。競合状態の問題はありません。

于 2013-09-13T04:11:58.253 に答える
0

競合状態の危険を冒さずにそれは可能ですか?

Redis はシングルスレッドです。

ハッシュフィールド (文字列) に (アトミックに) 追加する必要があります。

ハッシュフィールドのキー?何を試しましたか?

于 2013-09-13T02:02:38.460 に答える