语法

1
MSETNX key value [key value ...]

可用版本

≥ 1.0.1

时间复杂度

$O(N)$

其中 N 是要设置的 key 的数量。

ACL类别

@write, @string, @slow

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

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

MSETNX 是原子的,所以所有给定的键都是一次性设置的。也就是说,客户端不可能看到一些键被更新,而另一些键却没有变化。

返回值

返回一个整数,具体而言:

  • 1 - 如果所有的键都被设置了,则返回 1;
  • 0 - 如果没有设置任何键(至少有一个键已经存在),则返回 0。

示例

1
2
3
4
5
6
7
8
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)

(END)