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 原来的值的末尾