2017-01-02 16 views
0

ここで、10個のキー - 値を持つRedisハッシュがあるとしましょう。私はそれらをすべてperlハッシュ(または任意の言語マップ/ハッシュ/辞書)に読み込み、3つの値を更新する必要があります。今度は、ハッシュの3つの値を変更し、それをredisに書き戻す必要があります。 (A)&(B)のうちどれが速いでしょうか?ハッシュ効率のRedis - hmset()ハッシュ効率

(A)$redis_handle->hmset($redis_hash_name,\%perl_hash);

または

(B)while (($k,$val) = each %three_changed_items_in_perl_hash) { $redis_handle->hset($redis_hash_name,$k,$val); }

私は何を考えるしようとしていることである: (A)は、10個の要素とRedisのための一つの通信です。しかし、赤は3つだけ更新する必要があります。値が変更されていなくてもredisは時間を無駄にしますか? (B)は、1つの要素を持つ3つのコミュニケーションです。

答えて

2

Fastestは、更新されたフィールドとそれぞれの値のみを持つ単一のHMSETを送信することです。 Redisはこれらのフィールドのみを更新し、明示的に言及されていないものは何もしません。

(C) $redis_handle->hmset($redis_hash_name,\%three_changed_items_in_perl_hash); 
+0

+1です。しかし、私の疑問の多くは、「ハッシュの変更されていない値は無視されますか? 。そうでなければ、私はループして、(C)を実行するときにperlで変更されたものを書き留める必要があります。 –

+0

それは無視されないので、ネットワークとCPUの面で無駄な同じ値に更新されます。変更だけで構成されるハッシュを準備して送信してください。 –