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

**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


xx 只在键存在时, 才对键进行设置操作
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]> 
  • 5
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值