String
最后更新于
这有帮助吗?
String 类型是 Redis 中最基础的数据结构,其它几种数据结构都是在字符串类型的基础上构建的。String 类型是二进制安全的,意思是 Redis 的 String 可以包含任何数据。如数字,字符串,jpg图片或者序列化的对象。
使用场景
缓存:经典使用场景,把常用数据,比如用户信息,保存在 Redis 中,Redis 作为缓存层,MySQL 作为持久层,降低 MySQL 的读写压力。
计数器:Redis 是单线程模型,一个命令执行完才会执行下一个命令。
session
:常见方案是使用用户 id 作为 key,session 作为 value,实现 session 的共享。
将字符串值value
关联到key
。如果key
已经有其它值,set
就会覆盖掉旧值,无视类型。
从 Redis2.6.12 版本开始,SET
命令的行为可以通过一系列参数来修改:
EX seconds
:将键的过期时间设置为seconds秒。
PX milliseconds
:将键的过期时间设置为millisecond毫秒。
NX
:当键不存在时设置值。
XX
:当键存在时设置值。
注意
因为SET
命令可以通过参数来实现SEINX
、SETES
、PSETES
命令相同的效果,所以Redis将来的版本可能会移除并废弃SETNX
、SETEX
、PSETEX
命令。
在 Redis2.6.12 版本以前,SET
命令总是返回OK。
从 Redis2.6.12 版本开始,SET
命令只在操作成功是返回OK
。如果命令使用NX
或者XX
选项,但因为条件没有达到而造成操作为执行,将返回空批量回复(NULL Bulk Reply)
返回与键相关联的字符串值。
如果key不存在,反追特殊值nil;否则返回对应的值。
如果key的值并非字符串类型,那么返回一个错误,因为GET命令只能用于字符串值。
对不存在的键key或者是字符串类型的键执行GET命令:
对不是字符串类型的键执行GET命令
将key的值设置为value,并返回key在设置之前的旧值。
返回给定键的旧值。如果没有旧值,则返回nil。当键存在但不是字符串类型时,返回一个错误。
返回键存储的字符串值的长度
STRLEN命令返回字符串值的长度。当键不存在时,返回0。当键存储的不是字符串值时,返回一个错误。
如果键已经存在并且它的值是一个字符串,APPEND命令将把value追加到键现有值的末尾。
如果键不存在,APPEND就将键的值设置为value。
返回追加值之后的长度。
对不存在的key执行APPEND
对已经存在的字符串进行APPEND
为key存储的数字值加上一。
如果key不存在,那么它的值将先被初始化为0,然后执行INCR命令。
如果key存储的值不能被解释为数字,那么INCR将返回一个错误。
INCR命令返回key在执行加一操作之后的值。
为键存储的数字值加上增量increment。
如果key不存在,那么key的值先被初始化为0,然后再执行INCRBY命令。
如果key存储的值不能被解释为数字,那么INCRBY命令将返回一个错误。
返回加上增量increment之后的值。
键存在,并且值为数字
键不存在
键存在,但值无法被解释为数字:
为key存储的值加上浮点数。
如果key不存在,那么INCRBYFLOAT会先将key的值初始化为0,然后在执行增量操作。
如果命令执行成功,那么key的值会被更新为执行加法计算后的新值,并且新值会以字符串的形式返回给调用者。
无论是key的值还是增了,都可以用2.0e7、3e5这样的指数符号来表示,但是,执行INCRBYFLOAT命令之后的值总是以同样的形式来存储总是由一个数字、一个小数点和一个任意长度的小数部分组成(比如:43.1)。小数部分尾随的0会被移除。如果可能的话,还会将浮点数转换为整数(比如3.0会被保存为3)
此外,无论加法计算所得的浮点数的实际精度有多长,INCRBYFLOAT命令的计算结果最多只保留小数位后十七位。
当以下任意一个条件发生时,命令会返回一个错误。
key的值不是字符串类型。
key的当前值或者给定的增量不能被解释为双精度浮点数。
返回增加之后的新值。
为key存储的值减去一
同时为多个键设置值。
如果某个给定的键已经存在,那么MSET将使用新值覆盖旧值。
MSET
是一个原子性(atomic)操作, 所有给定键都会在同一时间内被设置, 不会出现某些键被设置了但是另一些键没有被设置的情况。
MSET 命令总是返回OK。
当且仅当所有给定键不存在时,为所有给定键设置值。
即使只有一个给定键已经存在,MSETNX命令也会拒绝执行对所有键的设置操作。
MSETNX
是一个原子性(atomic)操作, 所有给定键要么就全部都被设置, 要么就全部都不设置, 不可能出现第三种状态。
当所有给定键都设置成功时, 命令返回 1
; 如果因为某个给定键已经存在而导致设置未能成功执行, 那么命令返回 0
。
对不存在的键执行MSETNX命令
对某个已经存在的键进行设置
返回给定的一个或多个字符串键的值。
如果给定的字符串键里面, 有某个键不存在, 那么这个键的值将以特殊值 nil
表示。
MGET
命令将返回一个列表, 列表中包含了所有给定键的值。