SETNX
的全称是 "SET if Not eXists",其功能是只有当指定的 key 不存在时,才会将 key 的值设置为指定的 value。如果 key 已经存在,那么 SETNX
命令不会执行任何操作。它是两个步骤,为何会是原子性呢?
SETNX
之所以被认为是原子性操作其根本原因还是因为 Redis 的单线程模型决定的,在 Redis 中,单个命令的执行是原子性的,即在任何给定的时间点,Redis 只会有一个命令在被执行。因此,当 SETNX
命令被执行时,没有其他命令可以在它检查 key 是否存在和可能设置值这两个操作之间运行,保证了这两个步骤的原子性。
更多阅读: