MSETNX

仅当所有键都不存在时,才以原子方式修改一个或多个键的字符串值。

语法

MSETNX key value [key value ...]

引入版本:1.0.1

复杂度摘要:O(N)

[!NOTE] 此命令的行为在集群 Redis 环境中有所不同。请参阅 多键操作 页面了解更多信息。

将给定的键设置为其各自的值。即使只有一个键已经存在,MSETNX 也不会执行任何操作。

由于这种语义,可以使用 MSETNX 来设置代表唯一逻辑对象的不同字段的不同键,从而确保设置所有字段或根本不设置字段。

MSETNX 是原子的,因此所有给定的键都会立即设置。客户端不可能看到某些键已更新而其他键未更改。

必需参数

key value [key value ...]

设置一个或多个键值对。如果其中任何键已存在,则不会设置任何键。

示例

redis> MSETNX key1 "Hello" key2 "there"
(integer) 1
redis> MSETNX key2 "new" key3 "world"
(integer) 0
redis> MGET key1 key2 key3
1) "Hello"
2) "there"
3) (nil)

Redis Software 与 Redis Cloud 兼容性

Redis
软件
Redis
Cloud
说明
✅ 标准
✅ 主动-主动
✅ 标准
✅ 主动-主动

返回值

RESP2

以下之一: * 整数回复:如果未设置键,则为 0(至少一个键已存在)。 * 整数回复: 1(如果所有键均已设置)。

RESP3

以下之一: * 整数回复:如果未设置键,则为 0(至少一个键已存在)。 * 整数回复: 1(如果所有键均已设置)。

资料来源:Redis 官方 MSETNX 文档;中文内容参考 Redis 文档许可。