HSETNX:只在字段不存在的情况下为它设置值

HSETNX 命令的作用和 HSET 命令的作用非常相似,它们之间的区别在于,HSETNX 命令只会在指定字段不存在的情况下执行设置操作:

  1. HSETNX hash field value

HSETNX 命令在字段不存在并且成功为它设置值时返回 1 ,在字段已经存在并导致设置操作未能成功执行时返回 0


图 3-5 HSETNX 命令执行之前的 article::10086 散列_images/IMAGE_BEFORE_HSETNX.png


举个例子,对于图 3-5 所示的 article::10086 散列来说,执行以下 HSETNX 命令将不会对散列产生任何影响,因为 HSETNX 命令想要设置的 title 字段已经存在:

  1. redis> HSETNX article::10086 title "Redis Performance Test"
  2. (integer) 0 -- 设置失败

相反地,如果我们使用 HSETNX 命令去对尚未存在的 view_count 字段进行设置,那么这个命令将会顺利执行,并将 view_count 字段的值设置为 100

  1. redis> HSETNX article::10086 view_count 100
  2. (integer) 1 -- 设置成功

图 3-6 展示了 HSETNX 命令成功执行之后的 article::10086 散列。


图 3-6 HSETNX 命令执行之后的 article::10086 散列_images/IMAGE_AFTER_HSETNX.png


其他信息

属性
复杂度O(1)
版本要求HSETNX 命令从 Redis 2.0.0 版本开始可用。