让我们说有一个Redis散列有10个键值。我将它们全部读入perl散列(或任何语言映射/散列/字典)并需要更新3个值。现在我更改了哈希中的3个值,需要将其写回redis。在(A)和& (B)哪一个会更快?
(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)是与redis有10个元素的一次交流。但redis只需要更新其中的3个。即使值没有改变,redis也会浪费时间吗? (B)是三个与一个元素重新交换的通信。
答案 0 :(得分:2)
最快的是发送一个只有更新字段及其各自值的HMSET
。 Redis只会更新这些字段,并且不会对未明确提及的字段执行任何操作。
(C) $redis_handle->hmset($redis_hash_name,\%three_changed_items_in_perl_hash);