1. HSETNX key field value
起始版本:2.0.0
时间复杂度:O(1)
将哈希表 key 中的域 field 的值设置为 value ,当且仅当域 field 不存在。
若域 field 已经存在,该操作无效。
如果 key 不存在,一个新哈希表被创建并执行 HSETNX 命令。
1.1. 返回值:
设置成功,返回 1 。
如果给定域已经存在且没有操作被执行,返回 0 。
1.2. DEMO
# 如果key不存在,先创建一个hash表,再执行hsetnx操作
127.0.0.1:6380> EXISTS user:2
(integer) 0
127.0.0.1:6380> HSETNX user:2 id 2
(integer) 1
127.0.0.1:6380> hget user:2 id
"2"
# 如果一个新的field被设置成功,返回1
127.0.0.1:6380> hget user:2 age
(nil)
127.0.0.1:6380> hset user:2 age 20
(integer) 1
127.0.0.1:6380> hget user:2 age
"20"
# 如果field已存在,该操作无效,返回0
127.0.0.1:6380> HSETNX user:2 age 18
(integer) 0
127.0.0.1:6380> hget user:2 age
"20"
# 如果key的类型不是hash,返回错误
127.0.0.1:6380> set mykey2 value2
OK
127.0.0.1:6380> HSETNX mykey2 age 12
(error) WRONGTYPE Operation against a key holding the wrong kind of value