首页/数据/数据库速查/HSETNX 字段不存在才设置
本包目录(495 条)
MySQL 基础与连接36 条SQL 语法52 条用户与权限21 条备份与恢复56 条主从复制与高可用53 条性能与调优57 条
Redis 命令96 条
Redis 运维与场景124 条

HSETNX 字段不存在才设置

单字段版的「不存在才写」:返回 1 表示设置成功,0 表示字段已存在;不会覆盖已有值,原子单命令。

数据库速查数据更新于 2026-10-12

示例

示例
HSETNX task:88 status pending    # 1(字段不存在,写入)
HSETNX task:88 status running    # 0(已存在,拒绝覆盖)
HGET task:88 status              # pending
# 典型:初始化默认字段,不覆盖用户已设置的值
HSETNX config:site theme light
返回1 设置成功 / 0 已存在未设置
作用范围单个字段
原子性单命令原子
多字段的「不存在才初始化」可以用 HSETNX 逐个做,或 Lua 批量判断;按整键级别的 NX 语义请用 SET 或 HSET 前 EXISTS 判断。

易错点

  • 用 HSETNX 做并发互斥:多个进程仍可能都拿到 1(不同字段),互斥应使用 SET NX 或专用锁键
  • 把返回 0 当异常重试:0 是正常的「已存在」语义

数据来源与参考

  • Redis 官方文档: HSETNX

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌