Redis 的 HMSET 命令同时将多个 field-value (域-值)对设置到 哈希表 的 KEY 中。此命令会覆盖哈希表中已存在的域。
如果 KEY 不存在,一个空哈希表被创建并执行 HMSET 操作。
192.168.98.70:6379> HMSET KEY field value [field value ...]
参数 | 描述 |
---|---|
KEY | 要设置的 HASH 的键。 |
field | 要设置的域。 |
value | 要设置的域对应的值。 |
如果命令执行成功,返回 OK 。当 KEY 不是哈希表(hash)类型时,返回一个错误。
O(N), N 为 field-value 对的数量。
>= 2.0.0
当 field 不存在时,设置成功
# field 不存在
192.168.98.70:6379> HMSET haidcoder site haicoder.net module Database category Redis
OK
192.168.98.70:6379> HGET haidcoder site
"haicoder.net"
192.168.98.70:6379> HGET haidcoder module
"Database"
192.168.98.70:6379> HGET haidcoder category
"Redis"
192.168.98.70:6379> DEL haidcoder
(integer) 1
我们首先,使用 HMSET 命令,批量设置键 haicoder 的 site 字段,module 字段,和 category 字段。接着,我们使用 HGET 命令,获取键 haicoder 的 site 字段的值,返回 haicoder.net。
最后,我们使用 HGET 命令,获取键 haicoder 的 module 字段的值,返回 Database。使用 HGET 命令,获取键 haidcoder 的 category 字段的值,返回 Redis。
当 field 存在时,会覆盖旧值
# field 存在
192.168.98.70:6379> HSET haicoder.net name "haicoder"
(integer) 1
192.168.98.70:6379> HGET haicoder.net name
"haicoder"
192.168.98.70:6379> HMSET haicoder.net name "hicoder" module Database category Redis
OK
192.168.98.70:6379> HGET haicoder.net name
"hicoder"
192.168.98.70:6379> HGET haicoder.net module
"Database"
192.168.98.70:6379> DEL haicoder.net
(integer) 1
我们首先,使用 HSET 命令,设置键 haicoder.net 的 name 字段为 haicoder。使用 HGET 命令,获取刚设置的键 haicoder.net 的 name 字段的值,返回 haicoder。
接着,我们使用 HMSET 命令,批量设置键 haicoder.net 的 name 字段,module 字段,和 category 字段,此时虽然 name 字段存在, 但同样设置成功,覆盖了原来的旧值。
最后,我们使用 HGET 命令,获取刚设置的键 haicoder.net 的 name 字段的值,返回 hicoder,说明此时旧值被覆盖了。
Redis 的 HMSET 命令同时将多个 field-value (域-值)对设置到哈希表 KEY 中。Redis HMSET 命令语法:
192.168.98.70:6379> HMSET KEY field value [field value ...]