Redis SETEX命令

Redis SETEX命令教程

Redis SETEX 命令用于将 Redis 中值 value 关联到 KEY ,并将 KEY 的生存时间设为 seconds (以秒为单位)。如果 KEY 已经存在, SETEX 命令将覆写旧值。这个命令类似于以下两个命令:

SET KEY value EXPIRE KEY seconds # 设置生存时间

不同之处是, SETEX 是一个原子性操作,关联值和设置生存时间两个动作会在同一时间内完成,该命令在 Redis 用作缓存时,非常实用。

Redis SETEX命令详解

语法

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 不存在时,设置成功

# 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 存在时,会覆盖旧值

# 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 SETEX 命令用于将 Redis 中值 value 关联到 KEY ,并将 KEY 的生存时间设为 seconds (以秒为单位)。Redis SETEX 命令语法:

192.168.98.70:6379> SETEX KEY seconds value