Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Hash 哈希效率中的Redis-hmset()_Hash_Redis - Fatal编程技术网

Hash 哈希效率中的Redis-hmset()

Hash 哈希效率中的Redis-hmset(),hash,redis,Hash,Redis,假设有一个Redis散列有10个key-vals。我将它们全部读入perl散列(或任何语言映射/hash/dict),需要更新其中3个值。现在我更改了散列中的3个值,需要将其写回redis。在(一)及(二)项中,哪一项较快? (A) $redis\u handle->hmset($redis\u hash\u name,\%perl\u hash) 或 (B) while($k,$val)=每%3个\u更改\u perl\u散列中的\u项){ $redis\u handle->hset($red

假设有一个Redis散列有10个key-vals。我将它们全部读入perl散列(或任何语言映射/hash/dict),需要更新其中3个值。现在我更改了散列中的3个值,需要将其写回redis。在(一)及(二)项中,哪一项较快?

(A)
$redis\u handle->hmset($redis\u hash\u name,\%perl\u hash)

(B)
while($k,$val)=每%3个\u更改\u perl\u散列中的\u项){
$redis\u handle->hset($redis\u hash\u name,$k,$val);
}

我试图思考的是: (A) 是与redis的一次通信,包含10个元素。但redis只需要更新其中的3个。即使不更改值,redis也会浪费时间吗?
(B) 是与redis的三个通讯,包含1个元素

最快的方法是发送一个只有更新字段及其各自值的
HMSET
。Redis只会更新这些字段,不会对未明确提及的字段执行任何操作

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

最快的方法是发送一个只有更新字段及其各自值的
HMSET
。Redis只会更新这些字段,不会对未明确提及的字段执行任何操作

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

+1 . 但我更怀疑的是“redis会忽略散列中那些不变的值吗?”。否则,在执行(C)时,我需要在perl中循环并记录更改的内容。它不会忽略这些内容,因此它们将被更新为与以前相同的值,这在网络和CPU方面是浪费的-只需准备一个仅包含更改的哈希并发送即可。+1。但我更怀疑的是“redis会忽略散列中那些不变的值吗?”。否则,在执行(C)时,我需要在perl中循环并记录更改的内容。它不会忽略这些内容,因此它们将被更新为与以前相同的值,这在网络和CPU方面是浪费的—只需准备一个仅包含更改的哈希并发送即可。