轻工具箱
← 返回手册

SET

Redis手册 / 字符串

SET key value [EX seconds] [PX milliseconds] [NX|XX]

介绍

Redis 字符串命令用于管理 Redis 中的字符串值。

将字符串值 value 关联到 key。

如果 key 已经持有其他值, SET 就覆写旧值, 无视类型。

当 SET 命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。

可选参数

  • 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 : 只在键已经存在时, 才对键进行设置操作。

因为 SET 命令可以通过参数来实现 SETNX 、 SETEX 以及 PSETEX 命令的效果, 所以 Redis 将来的版本可能会移除并废弃 SETNX 、 SETEX 和 PSETEX 这三个命令。

返回值

在 Redis 2.6.12 版本以前, SET 命令总是返回 OK 。

从 Redis 2.6.12 版本开始, SET 命令只在设置操作成功完成时才返回 OK ; 如果命令使用了 NX 或者 XX 选项, 但是因为条件没达到而造成设置操作未执行, 那么命令将返回空批量回复 (NULL Bulk Reply)。

代码示例

对不存在的键进行设置:


1
redis> SET key "value"
2
OK
3

4
redis> GET key
5
"value"

对已存在的键进行设置:


1
redis> SET key "new-value"
2
OK
3

4
redis> GET key
5
"new-value"

使用 EX 选项:


1
redis> SET key-with-expire-time "hello" EX 10086
2
OK
3

4
redis> GET key-with-expire-time
5
"hello"
6

7
redis> TTL key-with-expire-time
8
(integer) 10069

使用 PX 选项:


1
redis> SET key-with-pexpire-time "moto" PX 123321
2
OK
3

4
redis> GET key-with-pexpire-time
5
"moto"
6

7
redis> PTTL key-with-pexpire-time
8
(integer) 111939

使用 NX 选项:


1
redis> SET not-exists-key "value" NX
2
OK      # 键不存在,设置成功
3

4
redis> GET not-exists-key
5
"value"
6

7
redis> SET not-exists-key "new-value" NX
8
(nil)   # 键已经存在,设置失败
9

10
redis> GEt not-exists-key
11
"value" # 维持原值不变

使用 XX 选项:


1
redis> EXISTS exists-key
2
(integer) 0
3

4
redis> SET exists-key "value" XX
5
(nil)   # 因为键不存在,设置失败
6

7
redis> SET exists-key "value"
8
OK      # 先给键设置一个值
9

10
redis> SET exists-key "new-value" XX
11
OK      # 设置新值成功
12

13
redis> GET exists-key
14
"new-value"

Redis 字符串命令

以下是一些用于在 Redis 中管理字符串的基本命令的列表:

命令描述SET设置指定 key 的值GET获取指定 key 的值GETRANGE返回 key 中字符串值的子字符GETSET将给定 key 的值设为 value ,并返回 key 的旧值 ( old value )GETBIT对 key 所储存的字符串值,获取指定偏移量上的位 ( bit )MGET获取所有(一个或多个)给定 key 的值SETBIT对 key 所储存的字符串值,设置或清除指定偏移量上的位(bit)SETEX设置 key 的值为 value 同时将过期时间设为 secondsSETNX只有在 key 不存在时设置 key 的值SETRANGE从偏移量 offset 开始用 value 覆写给定 key 所储存的字符串值STRLEN返回 key 所储存的字符串值的长度MSET同时设置一个或多个 key-value 对MSETNX同时设置一个或多个 key-value 对PSETEX以毫秒为单位设置 key 的生存时间INCR将 key 中储存的数字值增一INCRBY将 key 所储存的值加上给定的增量值 ( increment )INCRBYFLOAT将 key 所储存的值加上给定的浮点增量值 ( increment )DECR将 key 中储存的数字值减一DECRBY将 key 所储存的值减去给定的减量值 ( decrement )APPEND将 value 追加到 key 原来的值的末尾