Redis SETEX 命令用于将 Redis 中值 value 关联到 KEY ,并将 KEY 的生存时间设为 seconds (以秒为单位)。如果 KEY 已经存在, SETEX 命令将覆写旧值。这个命令类似于以下两个命令:
SET KEY value EXPIRE KEY seconds # 设置生存时间
不同之处是, SETEX 是一个原子性操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。
192.168.98.70:6379> SETEX KEY seconds value
参数 | 作用 |
---|---|
KEY | 要设置的 KEY |
seconds | 过期时间,秒为单位 |
value | 要设置的具体的值 |
从 Redis 2.6.12 版本开始,SET 命令的行为可以通过一系列参数来修改:
参数 | 作用 |
---|---|
EX second | 设置键的过期时间为 second 秒。 SET KEY value EX second 效果等同于 SETEX KEY second value 。 |
PX millisecond | 设置键的过期时间为 millisecond 毫秒。 SET KEY value PX millisecond 效果等同于 PSETEX KEY millisecond value 。 |
NX | 只在键不存在时,才对键进行设置操作。 SET KEY value NX 效果等同于 SETNX KEY value 。 |
XX | 只在键已经存在时,才对键进行设置操作。 |
设置成功时返回 OK 。当 seconds 参数不合法时,返回一个错误。
O(1)
>= 2.0.0
当 KEY 不存在时,设置成功
# KEY 不存在
192.168.98.70:6379> EXISTS haicoder.net
(integer) 0
192.168.98.70:6379> SETEX haicoder.net 100 Redis
OK
192.168.98.70:6379> GET haicoder.net
"Redis"
192.168.98.70:6379> TTL haicoder.net
(integer) 95
192.168.98.70:6379> DEL haicoder.net
(integer) 1
使用 EXISTS 命令,判断键 haicoder.net 不存在。使用 SETEX 命令,设置键 haicoder.net 的值为 Redis ,并设置过期时间为 100 秒。
接着,使用 GET 命令,获取刚设置的键 haicoder.net 的值为 Redis。使用 TTL 命令,获取刚设置的键 haicoder.net 的值剩余生存时间为 95 秒。
当 KEY 存在时,会覆盖旧值
# KEY 存在
192.168.98.70:6379> SET haicoder.net Redis
OK
192.168.98.70:6379> GET haicoder.net
"Redis"
192.168.98.70:6379> SETEX haicoder.net 100 Mongo
OK
192.168.98.70:6379> GET haicoder.net
"Mongo"
192.168.98.70:6379> TTL haicoder.net
(integer) 92
192.168.98.70:6379> DEL haicoder.net
(integer) 1
我们首先,使用 SET 命令,设置 haicoder.net 的值为 Redis。接着,使用 GET 命令,获取刚设置的键 haicoder.net 的值为 Redis。
使用 SETEX 命令,设置键 haicoder.net 的值为 Mongo ,并设置过期时间为 100 秒。使用 GET 命令,获取刚设置的键 haicoder.net 的值为 Mongo。
最后,使用 TTL 命令,获取刚设置的键 haicoder.net 的值剩余生存时间为 92 秒。
Redis SETEX 命令用于将 Redis 中值 value 关联到 KEY ,并将 KEY 的生存时间设为 seconds (以秒为单位)。Redis SETEX 命令语法:
192.168.98.70:6379> SETEX KEY seconds value