*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"
*常见错误
- 对非 Hash 使用:返回 WRONGTYPE。
*最佳实践
- 初始化字段:确保字段只在不存在时设置,避免覆盖已有数据。
*FAQ
Q: HSETNX 和 HSET 有什么区别? A: HSETNX 只在 field 不存在时设置;HSET 总是设置(覆盖已有值)。HSETNX 用于初始化字段。
Q: HSETNX 和 HMSET 有什么区别? A: HSETNX 只设置单个 field,且只在不存在时设置;HMSET 批量设置多个 field,总是覆盖。