设置key
以保存字符串型的value
。 如果key
已经存在,则无论其保存的值的类型为何,它都会被覆盖。
可用版本:从1.0.0开始可用 时间复杂度:O(1)
命令格式
SET key value [EX seconds|PX milliseconds|KEEPTTL] [NX|XX]
参数
Set命令支持以下参数,来改变它的行为:
- EX seconds -- 设置过期时间,以秒为单位。
- PX miliseconds -- 设置过期时间,以毫秒为单位。
- NX -- 只在key不存在的情况下,保存
key
及对应的value
。 - XX -- 只在key存在的情况下,保存
key
及对应的value
。 - KEEPTTL -- 保持key原有的过期时间。
注意:如今,Set命令的参数的功能已经可以代替SETNX、SETEX、PSETEX,这三个命令可能会在以后的Redis版本中被删除。
返回值
如果命令执行成功返回:OK
,如果因为指定了参数NX
或XX
,但条件不符合,SET命令没有执行时,返回 nil
。
示例
使用SET
命令保存值;使用GET
命令获取值;设置已在存的键,将会覆盖原来的值;值包含空格时,要用引号引起来。
redis> SET mykey Hello
OK
redis> GET mykey
"Hello"
redis> SET mykey "Hello World"
OK
redis> GET mykey
"Hello World"
使用EX
选项设置过期时间,以秒为单位。超过过期时间后值将被丢弃。
redis> SET city BeiJing EX 5
"OK"
...5秒后...
redis> GET city
(nil)
使用PX
选项设置过期时间,以毫秒为单位。
redis> SET city BeiJing PX 5000
OK
使用NX
选项,确保设置的key不存在时才成功
redis> SET key value1 NX
OK
redis> SET key value2 NX
(nil)
redis> GET key
"value1"
使用XX
选项,确保设置的key存在时才成功
redis> SET key value1 XX
(nil)
redis> SET key value1
OK
redis> SET key value2 XX
OK
redis> GET key
"value2"
使用KEEPTTL
选项,确保设置的key对应的值但不改变原有的过期时间;ttl命令可以查询key的过期时间
redis> SET key value1 EX 100
OK
redis> SET key value2 KEEPTTL
OK
redis> ttl key
(integer) 90
变更历史
- >=2.6.12添加
EX
,PX
,NX
和XX
选项。 - >= 6.0 添加
KEEPTTL
选项。