• MSETNX key value [key value …]
    • 返回值
    • 代码示例

    MSETNX key value [key value …]

    可用版本: >= 1.0.1
    时间复杂度: O(N), 其中 N 为被设置的键数量。

    当且仅当所有给定键都不存在时,为所有给定键设置值。

    即使只有一个给定键已经存在,MSETNX 命令也会拒绝执行对所有键的设置操作。

    MSETNX 是一个原子性(atomic)操作,所有给定键要么就全部都被设置,要么就全部都不设置,不可能出现第三种状态。

    返回值

    当所有给定键都设置成功时,命令返回 1 ;如果因为某个给定键已经存在而导致设置未能成功执行,那么命令返回 0

    代码示例

    对不存在的键执行 MSETNX 命令:

    1. redis> MSETNX rmdbs "MySQL" nosql "MongoDB" key-value-store "redis"
    2. (integer) 1
    3.  
    4. redis> MGET rmdbs nosql key-value-store
    5. 1) "MySQL"
    6. 2) "MongoDB"
    7. 3) "redis"

    对某个已经存在的键进行设置:

    1. redis> MSETNX rmdbs "Sqlite" language "python" # rmdbs 键已经存在,操作失败
    2. (integer) 0
    3.  
    4. redis> EXISTS language # 因为 MSETNX 命令没有成功执行
    5. (integer) 0 # 所以 language 键没有被设置
    6.  
    7. redis> GET rmdbs # rmdbs 键也没有被修改
    8. "MySQL"