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