Hash 哈希效率中的Redis-hmset()
假设有一个Redis散列有10个key-vals。我将它们全部读入perl散列(或任何语言映射/hash/dict),需要更新其中3个值。现在我更改了散列中的3个值,需要将其写回redis。在(一)及(二)项中,哪一项较快? (A)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\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方面是浪费的—只需准备一个仅包含更改的哈希并发送即可。