# redis的SETNX命令作用

SETNX 是 Redis 的一个原子命令,全称是 "SET if Not eXists"(不存在时设置)。其作用为:

  • 当指定键 不存在 时,将键设置为指定的值,并返回 1(设置成功)。
  • 当指定键 已存在 时,不进行任何操作,并返回 0(设置失败)。

# 典型用途

  • 分布式锁:多个客户端尝试 SETNX 同一个锁键,只有一个能成功获得锁。
  • 去重标记:例如防止重复处理消息,用 SETNX 标记已处理的消息 ID。

# 命令格式

SETNX key value
1

# 示例

假如:用业务标志是user,用户id为:1.则:user:1就是redis的key。

第一步:用户的第一个请求。

SETNX user:1 "Hello"
1

返回1,表示设置成功。

image-20260216143703136

第二步:用户的重复提交请求。

SETNX user:1 "World"
1

user:1已经存在了,用户提交的重复请求返回0表示redis的user:1标识的key已经存在了。

线上tx:0>SETNX user:1 "World"
"0"
1
2

问题1:这个user:1的key被设置后是永久存在的吗?

# 注意事项

  • SETNX 是原子操作,在 Redis 单线程模型下天然保证并发安全。
  • 在 Redis 2.6.12 之后,也可以使用带 NX 参数的 SET 命令实现相同功能:SET key value NX
Last Updated: 4/3/2026, 6:47:37 AM