*Redis HSETNX 命令

只在 Hash 中 field 不存在时,设置 field 的值。


*语法

HSETNX key field value

*参数说明

参数 类型 必填 说明
key String Hash 键名
field String 字段名
value String 字段值

*返回值

条件 返回值
field 不存在,设置成功 1
field 已存在 0

*时间复杂度

O(1)

*

*示例

> HSETNX user:1001 name "Alice"
(integer) 1

> HSETNX user:1001 name "Bob"
(integer) 0    # name 已存在,不修改

> HGET user:1001 name
"Alice"

*常见错误

  1. 对非 Hash 使用:返回 WRONGTYPE。

*最佳实践

  1. 初始化字段:确保字段只在不存在时设置,避免覆盖已有数据。

*FAQ

Q: HSETNX 和 HSET 有什么区别? A: HSETNX 只在 field 不存在时设置;HSET 总是设置(覆盖已有值)。HSETNX 用于初始化字段。

Q: HSETNX 和 HMSET 有什么区别? A: HSETNX 只设置单个 field,且只在不存在时设置;HMSET 批量设置多个 field,总是覆盖。