Redis 基础教程

Redis 命令

Redis 高级教程

Redis 笔记

original icon
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://www.knowledgedict.com/tutorial/redis-command-msetnx.html

Redis MSETNX 命令

Redis 字符串(Strings)底层数据结构及所有相关命令 Redis 字符串(Strings)底层数据结构及所有相关命令


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>