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/042-Redis-21-命令-Redis-SET、SETNX、SETEX、SETGET/