Redis MSETNX 命令用来同时设置一个或多个 key-value 对,当且仅当所有给定 key 都不存在时,相当于批量操作 SETNX 命令。即使只有一个给定 key 已存在,MSETNX 也会拒绝执行所有给定 key 的设置操作。
MSETNX 是原子性的,因此它可以用作设置多个不同 key 表示不同字段(field)的唯一性逻辑对象(unique logic object),所有字段要么全被设置,要么全不被设置,不可能出现第三种状态。
命令格式
MSETNX key value [key value ...]
可用版本:>=1.0.1
时间复杂度:O(N),N 为要设置的 key 的数量
命令返回值
当所有 key 都成功设置,返回 1。
如果所有给定 key 设置失败(至少有一个 key 已经存在),那么返回 0。
注意:MSETNX 属于 multi-keys 操作,Redis Cluster 不建议使用这种多个 key 的操作,减少 max redirect 的产生。
示例
redis> MSETNX key1 "knowledge" key2 "dict" # 设置不存在的 key,设置成功
(integer) 1
redis> MSETNX key2 "tool" key3 "188" # 其中 key2 已经存在,设置失败
(integer) 0
redis> MGET key1 key2 key3 # key2 没有修改成功,key3 没有设置成功
1) "knowledge"
2) "dict"
3) (nil)
redis>