仅当尚未设置时才设置原子

Posted

技术标签:

【中文标题】仅当尚未设置时才设置原子【英文标题】:Atomic set only if not already set 【发布时间】:2013-04-16 01:29:37 【问题描述】:

只有在 Redis 中没有设置的情况下,有没有办法进行原子设置?

具体来说,我正在创建一个像“myapp:user:user_email”这样的用户,如果“user_email”已经被占用,我希望 Redis 给我一个错误,而不是默默地替换旧值。像声明,而不是替换。

【问题讨论】:

【参考方案1】:

见SETNX

如果键不存在,则设置键以保存字符串值。在这种情况下,它等于 SET。当 key 已经持有值时,不进行任何操作。 SETNX 是“SET if Not e Xists”的缩写。

您可以检查返回值。如果为 0,则未设置密钥,表示密钥已存在。

【讨论】:

您好,您回答了这个问题,但想知道 (H)MSETs 是否有类似的解决方案?

以上是关于仅当尚未设置时才设置原子的主要内容,如果未能解决你的问题,请参考以下文章

仅当对象在一行上不为空时才设置属性[重复]

仅当“模块”选项设置为“esnext”时才允许使用***“等待”表达式

仅当 FormType 为 Create 时才将所有者设置为当前用户

仅当没有 h1 同级元素时才为元素设置样式

仅当设置了 item 时才使用 WHERE 子句,否则选择所有行

仅当我从设置中禁用通知时才收到通知声音