Redis HSETNX命令

Redis HSETNX命令教程

Redis 的 HSETNX 命令用于将 哈希表 中的 KEY 中的域 field 的值设置为 value ,当且仅当域 field 不存在。若域 field 已经存在,该操作无效。如果 KEY 不存在,一个新哈希表被创建并执行 HSETNX 命令。

Redis HSETNX命令详解

语法

192.168.98.70:6379> HSETNX KEY field value

参数

参数 描述
KEY 要设置的 HASH 的键。
field 要设置的域。
value 要设置的域对应的值。

返回值

设置成功,返回 1 。如果给定域已经存在且没有操作被执行,返回 0 。

时间复杂度

O(1)

可用版本

>= 2.0.0

案例

field不存在

当 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 存在时,会覆盖旧值

# 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命令总结

Redis 的 HSETNX 命令用于将哈希表 KEY 中的域 field 的值设置为 value ,当且仅当域 field 不存在。Redis HSETNX 命令语法:

192.168.98.70:6379> HSETNX KEY field value