SET NX EX 是 Redis 中的一个命令组合,主要用于设置键值对时带有条件和过期时间。具体含义如下:

  • SET:这是 Redis 用于设置键值对的命令。
  • NX(Not eXists):这是一个可选参数,用于确保只有当键不存在时,才会设置值。如果键已经存在,命令将不会执行任何操作。
  • EX(EXpire):也是一个可选参数,用于设置键的过期时间(以秒为单位)。当指定时间到达后,键将自动删除。

使用场景举例:

  1. 防止重复执行操作:在分布式系统中,你可能希望确保某个操作只执行一次。通过 SET key value NX EX 10 命令,你可以在 Redis 中设置一个带有 10 秒过期时间的键。如果键已经存在(意味着操作已经执行过),则此命令不会再次设置键,从而防止重复操作。
  2. 分布式锁:这个命令组合常用于实现简单的分布式锁。例如,你可以通过 SET lock_key "locked" NX EX 30 来确保某个资源在 30 秒内只被一个客户端占有。当锁存在时,其他客户端无法获取同样的锁,直到锁自动过期或被显式释放。

实际命令示例:

SET mykey "Hello" NX EX 10

这条命令的意思是:仅当 mykey 不存在时,设置 mykey 的值为 "Hello",并且让 mykey 在 10 秒后自动过期。

通过这种方式,你可以有效地控制数据的写入和生命周期,特别是在需要确保操作的唯一性或防止竞争条件的场景中。