扫码一下
查看教程更方便
当且仅当所有给定键都不存在时, 为所有给定键设置值。
即使只有一个给定键已经存在, MSETNX 命令也会拒绝执行对所有键的设置操作。
MSETNX 是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置。
MSETNX 可以用来设置逻辑对象的属性,来确保要么都设置,要么都不设置。
redis Msetnx 命令基本语法如下:
redis 127.0.0.1:6379> MSETNX key1 value1 key2 value2 .. keyN valueN
>= 1.0.1
# 对不存在的 key 进行 MSETNX
redis 127.0.0.1:6379> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"
(integer) 1
redis 127.0.0.1:6379> MGET rmdbs nosql key-value-store
1) "MySQL"
2) "MongoDB"
3) "redis"
# MSET 的给定 key 当中有已存在的 key
redis 127.0.0.1:6379> MSETNX rmdbs "Sqlite" language "python" # rmdbs 键已经存在,操作失败
(integer) 0
redis 127.0.0.1:6379> EXISTS language # 因为 MSET 是原子性操作,language 没有被设置
(integer) 0
redis 127.0.0.1:6379> GET rmdbs # rmdbs 也没有被修改
"MySQL"
MSETNX 命令时间复杂度: O(N) 其中N为要设置的key的个数。