*Redis MSETNX 命令 仅当所有 key 不存在时才同时设置

*语法

MSETNX key value [key value ...]

*说明

MSETNXMulti SET if Not eXists)仅当所有给定 key 都不存在时,才一次性设置多个 key-value。

  • 原子性操作:所有 key 要么全部设置成功,要么全部不设置。
  • 即使只有一个 key 已存在,整个操作也会被拒绝。
  • 适合设置逻辑对象的多个属性,确保要么全成功,要么全失败。

*返回值

Integer reply

  • 1:所有 key 设置成功。
  • 0:某个 key 已存在,未执行任何设置。

*时间复杂度

O(N),其中 N 为设置的 key 数量。

*版本兼容性

Redis 版本 说明
>= 1.0.1 MSETNX 可用

*示例

# 所有 key 都不存在,设置成功
MSETNX key1 "Hello" key2 "there"
MGET key1 key2

# key2 已存在,设置失败
MSETNX key2 "new" key3 "world"
MGET key1 key2 key3

# 设置对象属性(原子性)
MSETNX user:100:name "Alice" user:100:age "30"
MGET user:100:name user:100:age