Redis SET、SETNX、SETEX、SETGET
SET
语法
1 |
|
- 可用版本:>= 1.0.0
- 时间复杂度:O(1)
- 作用:将字符串值
value
关联到key
。如果key
已经持有其他值,SET 会覆盖掉旧值。当SET命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。这些在演示中会进行说明。 - Redis 2.6.12 版本开始,可以替换 SETNX、SETEX 和 PSETEX,官方建议使用 SET
可选参数
EX seconds
:将键的过期时间设置为seconds
秒。SET key value EX second
效果等同于SETEX key second value
。PX milliseconds
:将键的过期时间设置为milliseconds
毫秒。SET key value PX millisecond
效果等同于PSETEX key millisecond value
。NX
:只在键不存在时,才对键进行设置操作。SET key value NX
效果等同于SETNX key value
。XX
:只在键已经存在时,才对键进行设置操作。
演示
1 |
|
SETNX
语法
1 |
|
- 可用版本: >= 1.0.0
- 时间复杂度: O(1)
- 如果 key 不存在,则设置 key 保存字符串值。在这种情况下,它等于 SET。当 key 已经保存值时,不执行任何操作。SETNX 是“SET if Not eXists”的缩写。
- 返回值:命令在设置成功时返回
1
, 设置失败时返回0
。 - 注意:从 Redis 2.6.12 版本开始,这个命令被认为是不推荐使用的。在迁移或编写新代码时,可以用带有 NX 参数的 SET 替换它。
演示
1 |
|
SETEX
语法
1 |
|
- 可用版本:>= 2.0.0
- 时间复杂度:O(1)
- 作用:将键
key
的值设置为value
,并将键key
的生存时间设置为seconds
秒钟。该命令相当于:SET key value EX seconds
- 注意:如果键
key
已经存在, 那么 SETEX 命令将覆盖已有的值。 - 注意:SETEX 是一个原子(
atomic
)操作, 它可以在同一时间内完成设置值和设置生存时间这两个操作。 - 注意:从 Redis 2.6.12 版本开始,这个命令被认为是不推荐使用的。在迁移或编写新代码时,可以用带有 EX 参数的 SET 替换它。
演示
1 |
|
PSETEX
语法
1 |
|
- 可用版本: >= 2.6.0
- 时间复杂度: O(1)
- 作用: 这个命令和
SETEX
命令相似,但它以毫秒为单位设置key
的生存时间, 而不是像SETEX
命令那样以秒为单位进行设置。
GET
语法
1 |
|
- 可用版本: >= 1.0.0
- 时间复杂度: O(1)
- 作用:返回与键
key
相关联的字符串值。 - 返回值:当键
key
不存在时, 返回特殊值(nil)
; 否则, 返回键key
的值。 - 注意如果键
key
的值并非字符串类型, 那么返回一个错误, 因为GET命令只能用于字符串值。
GETSET
语法
1 |
|
- 可用版本: >= 1.0.0
- 时间复杂度: O(1)
- 作用:将键
key
的值设为value
, 并返回键key
在被设置之前的旧值。如果键key
没有旧值, 那么命令返回(nil)
和 GET 命令一样,当键key
存在但不是字符串类型时,GETSET 命令会返回一个错误。
Redis SET、SETNX、SETEX、SETGET
https://flepeng.github.io/041-Redis-21-命令-Redis-SET、SETNX、SETEX、SETGET/