HMSET:一次为多个字段设置值

用户可以通过 HMSET 命令,一次为散列中的多个字段设置值:

  1. HMSET hash field value [field value ...]

HMSET 命令在设置成功时返回 OK


图 3-17 储存文章数据的散列_images/IMAGE_HMSET.png


比如说,为了构建图 3-17 所示的散列,我们可能会执行以下四个 HSET 命令:

  1. redis> HSET article::10086 title "greeting"
  2. (integer) 1
  3.  
  4. redis> HSET article::10086 content "hello world"
  5. (integer) 1
  6.  
  7. redis> HSET article::10086 author "peter"
  8. (integer) 1
  9.  
  10. redis> HSET article::10086 created_at "1442744762.631885"
  11. (integer) 1

但是接下来的这一条 HMSET 命令可以更方便地完成相同的工作:

  1. redis> HMSET article::10086 title "greeting" content "hello world" author "peter" created_at "1442744762.631885"
  2. OK

此外,因为客户端在执行这条 HMSET 命令时只需要与 Redis 服务器进行一次通信,而上面的四条 HSET 命令则需要客户端与 Redis 服务器进行四次通信,所以前者的执行速度要比后者快得多。

使用新值覆盖旧值

如果用户给定的字段已经存在于散列当中,那么 HMSET 命令将使用用户给定的新值去覆盖字段已有的旧值。

比如对于 titlecontent 这两个已经存在于 article::10086 散列的字段来说:

  1. redis> HGET article::10086 title
  2. "greeting"
  3.  
  4. redis> HGET article::10086 content
  5. "hello world"

如果我们执行以下命令:

  1. redis> HMSET article::10086 title "Redis Tutorial" content "Redis is a data structure store, ..."
  2. OK

那么 title 字段和 content 字段已有的旧值将被新值覆盖:

  1. redis> HGET article::10086 title
  2. "Redis Tutorial"
  3.  
  4. redis> HGET article::10086 content
  5. "Redis is a data structure store, ..."

其他信息

属性
复杂度O(N),其中 N 为被设置的字段数量。
版本要求HMSET 命令从 Redis 2.0.0 版本开始可用。