SET
将字符串值value
关联到 key
。
如果key
已经持有其他值, SET会覆盖掉旧值。当SET命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。这些在演示中会进行说明。
可选参数
从Redis 2.6.12
版本开始, SET命令的行为可以通过一系列参数来修改:
-
EX seconds
: 将键的过期时间设置为 seconds
秒。 -
PX milliseconds
: 将键的过期时间设置为 milliseconds
毫秒。 -
NX
: 只在键不存在时, 才对键进行设置操作。 执行 SET key value NX
的效果等同于执行 SETNX key value
。 -
XX
: 只在键已经存在时, 才对键进行设置操作。
演示
对不存在的键进行设置:
返回OK
。对存在的键进行设置:
如果key
已经持有其他值, SET会覆盖掉旧值。EX
选项:
PX
选项:
NX
选项:
只在键不存在时, 才对键进行设置操作(返回OK
),否则返回(nil)
。
XX
选项:
只在键已经存在时, 才对键进行设置操作(返回OK
),否则返回(nil)
。并且当SET命令对一个带有生存时间(TTL)的键进行设置之后, 该键原有的 TTL 将被清除。
TTL命令:当key
不存在时,返回 -2
。 当 key
存在但没有设置生存时间时,返回 -1
。 否则,以秒为单位,返回 key
的剩余生存时间。
注意:在 Redis2.8
以前,当 key
不存在,或者 key
没有设置生存时间时,命令都返回 -1
。
SETNX
只在键 key
不存在的情况下, 将键 key
的值设置为 value
。
若键 key
已经存在, 则SETNX命令不做任何动作。
返回值
命令在设置成功时返回 1
, 设置失败时返回 0
。
演示
SETEX
将键 key
的值设置为 value
, 并将键 key
的生存时间设置为 seconds
秒钟。
如果键 key
已经存在, 那么SETEX 命令将覆盖已有的值。
SETEX 是一个原子(atomic
)操作, 它可以在同一时间内完成设置值和设置生存时间这两个操作。
演示
如果键 key
已经存在, 那么SETEX 命令将覆盖已有的值。
如果之前没有设置生存时间:
如果之前有设置生存时间:
当键 key
不存在的情况下:
PSETEX
这个命令和SETEX命令相似, 但它以毫秒为单位设置key
的生存时间, 而不是像SETEX命令那样以秒为单位进行设置。
演示
和SETEX命令相似。
GET
返回与键 key
相关联的字符串值。
演示
当键 key
不存在时, 返回特殊值(nil)
; 否则, 返回键 key
的值。
如果键 key
的值并非字符串类型, 那么返回一个错误, 因为GET命令只能用于字符串值。
GETSET
将键 key
的值设为 value
, 并返回键 key
在被设置之前的旧值。
演示
返回给定键 key
的旧值。
如果键 key
没有旧值, 那么命令返回 (nil)
。
和GET命令一样,当键 key
存在但不是字符串类型时,GETSET命令会返回一个错误。
Redis中字符串SET、SETNX、SETEX、PSETEX、GET、GETSET命令就介绍到这里。
写博客是博主记录自己的学习过程,如果有错误,请指正,谢谢!