2024-05-02
版权声明:本文为博主付费文章,严禁任何形式的转载和摘抄,维权必究。 本文链接:https://www.skjava.com/mianshi/baodian/detail/3786935380

SETNX 的全称是 "SET if Not eXists",其功能是只有当指定的 key 不存在时,才会将 key 的值设置为指定的 value。如果 key 已经存在,那么 SETNX 命令不会执行任何操作。它是两个步骤,为何会是原子性呢?

SETNX 之所以被认为是原子性操作其根本原因还是因为 Redis 的单线程模型决定的,在 Redis 中,单个命令的执行是原子性的,即在任何给定的时间点,Redis 只会有一个命令在被执行。因此,当 SETNX 命令被执行时,没有其他命令可以在它检查 key 是否存在和可能设置值这两个操作之间运行,保证了这两个步骤的原子性。

更多阅读:

Redis 的线程模型是怎么样的?