**set key value [expiration EX seconds|PX milliseconds] [NX|XX]**
 

EX seconds : 将键的过期时间设置为 seconds 秒。 执行 SET key value EX seconds 的效果等同于执行 SETEX key seconds value。
PX milliseconds : 将键的过期时间设置为 milliseconds 毫秒。 执行 SET key value PX milliseconds 的效果等同于执行 PSETEX key milliseconds value 。
NX : 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX 的效果等同于执行 SETNX key value
XX : 只在键已经存在时, 才对键进行设置操作。
在 Redis 2.6.12 版本以前, SET 命令总是返回 OK 。
从 Redis 2.6.12 版本开始, SET 命令只在设置操作成功完成时才返回 OK ; 如果命令使用了 NX或者 XX 选项, 但是因为条件没达到而造成设置操作未执行, 那么命令将返回空批量回复(NULL Bulk Reply)

示例
####### 对已经存在的值进行设置,会覆盖
127.0.0.1:6379[2]> set key "value"
OK
127.0.0.1:6379[2]> get key
"value"
127.0.0.1:6379[2]> set key "new-value"
OK
127.0.0.1:6379[2]> get key
"new-value"
127.0.0.1:6379[2]>

####### 使用EX 选项

  • 一 使用ex

 127.0.0.1:6379[2]> set key-expire-time "value" ex 20
OK
127.0.0.1:6379[2]> get key-expire-time
"value"
127.0.0.1:6379[2]> ttl key-expire-time
(integer) 12
127.0.0.1:6379[2]> ttl key-expire-time
(integer) 10
127.0.0.1:6379[2]> ttl key-expire-time
(integer) 10
127.0.0.1:6379[2]> ttl key-expire-time
(integer) 9
127.0.0.1:6379[2]> get key-expire-time
"value"
127.0.0.1:6379[2]> get key-expire-time
(nil)
127.0.0.1:6379[2]> 

  • 二使用 setex
  • 127.0.0.1:6379[2]> SETEX key-expire-time-nx 10 "hello"
    OK
    127.0.0.1:6379[2]> get key-expire-time-nx
    "hello"
    127.0.0.1:6379[2]> ttl key-expire-time-nx
    (integer) 2
    127.0.0.1:6379[2]> ttl key-expire-time-nx
    (integer) 1
    127.0.0.1:6379[2]> ttl key-expire-time-nx
    (integer) -2
    127.0.0.1:6379[2]> get key-expire-time-nx
    (nil)
    127.0.0.1:6379[2]> 

  • 三 使用PSETEX
  • 127.0.0.1:6379[2]> PSETEX key-expire-time-px 10086 "px-hello"
    OK
    127.0.0.1:6379[2]> get key-expire-time-px
    "px-hello"
    127.0.0.1:6379[2]> PTTL key-expire-time-px
    (integer) 303
    127.0.0.1:6379[2]> PTTL key-expire-time-px
    (integer) -2
    127.0.0.1:6379[2]> get key-expire-time-px
    (nil)
    127.0.0.1:6379[2]> 

  • nx 只在键不存在时, 才对键进行设置操作

  • 使用 nx
  • 127.0.0.1:6379[2]> EXISTS not-exists-key
    (integer) 0
    127.0.0.1:6379[2]> set not-exists-key "value" nx
    OK
    127.0.0.1:6379[2]> get not-exists-key
    "value"
    127.0.0.1:6379[2]> set not-exists-key "new-value" nx
    (nil)  # 修改失败
    127.0.0.1:6379[2]> get not-exists-key 
    "value"  # 修改失败
     
  • setnx
  • 127.0.0.1:6379[2]> EXISTS exists-key
    (integer) 0 # 对应的key不存在
    127.0.0.1:6379[2]> SET exists-key "value" xx
    (nil) # 使用xx设置失败
    127.0.0.1:6379[2]> SET exists-key "value" 
    OK #设置对应的key-value
    127.0.0.1:6379[2]> SET exists-key "new-value" xx
    OK # 再使用xx修改
    127.0.0.1:6379[2]> get exists-key
    "new-value" # 修改成功
    127.0.0.1:6379[2]> 
     
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐