Redis 有 SETNX命令。
我阅读了文档。但是,它没有明确说明它是否是原子的。
我读到不建议用于分布式锁。但是,我的情况稍微简单一些。我只需要确保先来的人(第一个调用者)设置值,第二个调用者收到错误(SETNX 将返回 0)。
那么,问题是,它真的是原子的吗?
最佳答案
是的,SETNX
是原子的,无论调用者有多少,它都会按照您的要求执行。
各个 Redis 命令基本上都是原子的,因为 Redis 是单线程的。因此,文档不会费心为每个命令指定它。 (也许最直接的引用来自 FAQ 的第一行:“Redis 是键值数据库中的一条不同的进化路径,其中值可以包含更复杂的数据类型,并在这些数据类型上定义原子操作。”)
当涉及到设置和释放锁时,您不再处理单个命令,所以这就是为什么还有其他考虑因素。但是 SETNX
命令本身是原子的。
关于redis - SETNX 真的是原子的吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48716438/