Redis 的 HSETNX 命令用于将 哈希表 中的 KEY 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效。如果 KEY 不存在,一个新哈希表被创建并执行 HSETNX 命令。
192.168.98.70:6379> HSETNX KEY field value
参数 | 描述 |
---|---|
KEY | 要设置的 HASH 的键。 |
field | 要设置的域。 |
value | 要设置的域对应的值。 |
设置成功,返回 1 。如果给定域已经存在且没有操作被执行,返回 0 。
O(1)
>= 2.0.0
当 field 不存在时,设置成功
# field 不存在
192.168.98.70:6379> HSETNX haicoder.net name "haicoder"
(integer) 1
192.168.98.70:6379> HGET haicoder.net name
"haicoder"
192.168.98.70:6379> DEL haicoder.net
(integer) 1
我们首先,使用 HSETNX 命令,设置键 haicoder.net 的 name 字段为 haicoder,此时 name 字段不存在,所以返回 1。
接着,我们使用 HGET 命令,获取刚设置的键 haicoder.net 的 name 字段的值,返回 haicoder。
当 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> HSETNX haicoder.net name "hicoder"
(integer) 0
192.168.98.70:6379> HGET haicoder.net name
"haicoder"
192.168.98.70:6379> DEL haicoder.net
(integer) 1
我们首先,使用 HSET 命令,设置键 haicoder.net 的 name 字段为 haicoder,此时 name 字段不存在,所以返回 1。接着,我们使用 HGET 命令,获取刚设置的键 haicoder.net 的 name 字段的值,返回 haicoder。
再次使用 HSETNX 命令,设置键 haicoder.net 的 name 字段为 hicoder,此时 name 字段已经存在,所以设置失败,所以返回 0。
最后,我们使用 HGET 命令,获取刚设置的键 haicoder.net 的 name 字段的值,返回 haicoder,此时旧值没有被覆盖。
Redis 的 HSETNX 命令用于将哈希表 KEY 中的域 field 的值设置为 value ,当且仅当域 field 不存在。Redis HSETNX 命令语法:
192.168.98.70:6379> HSETNX KEY field value