萝岗区营销型网站建设,下载个网上销售网站,东营网上房地产,天津房地产集团网站建设一、介绍
Redis 中的字符串#xff0c;直接就是按照二进制数据的方式存储的#xff0c;不会做任何的编码转换。
Redis对于 string 类型#xff0c;限制了大小最大是512M 二、命令
SET
将 string 类型的 value 设置到 key 中。如果 key 之前存在#xff0c;则覆盖#…一、介绍
Redis 中的字符串直接就是按照二进制数据的方式存储的不会做任何的编码转换。
Redis对于 string 类型限制了大小最大是512M 二、命令
SET
将 string 类型的 value 设置到 key 中。如果 key 之前存在则覆盖无论原来的数据类型是什么。之前关于此 key 的 TTL 也全部失效。
语法
SET key value [expiration EX seconds|PX milliseconds] [NX|XX]
命令有效版本1.0.0 之后
时间复杂度O(1) 选项 SET 命令支持多种选项来影响它的行为
• EX seconds ⸺ 使用秒作为单位设置 key 的过期时间。
• PX milliseconds ⸺ 使用毫秒作为单位设置 key 的过期时间。
• NX ⸺ 只在 key 不存在时才进行设置即如果 key 之前已经存在设置不执行。
• XX ⸺ 只在 key 存在时才进行设置即如果 key 之前不存在设置不执行。
注意由于带选项的 SET 命令可以被 SETNX 、 SETEX 、 PSETEX 等命令代替所以之后的版本中Redis 可能进行合并。
返回值
• 如果设置成功返回 OK。
• 如果由于 SET 指定了 NX 或者 XX 但条件不满足SET 不会执行并返回 (nil)。 GET
获取 key 对应的 value。如果 key 不存在返回 nil。如果 value 的数据类型不是 string会报错。 语法
GET key
命令有效版本1.0.0 之后
时间复杂度O(1)
返回值key 对应的 value或者 nil 当 key 不存在。 MGET
⼀次性获取多个 key 的值。如果对应的 key 不存在或者对应的数据类型不是 string返回 nil。 语法
MGET key [key ...]
命令有效版本1.0.0 之后
时间复杂度O(N) N 是 key 数量
返回值对应 value 的列表 MSET
⼀次性设置多个 key 的值。 语法
MSET key value [key value ...]
命令有效版本1.0.1 之后
时间复杂度O(N) N 是 key 数量
返回值永远是 OK
多次 get vs 单次 mget 区别 如图使用 mget / mset 由于可以有效地减少了网络时间所以性能相较更高。
事实上使用mget命令后服务器收到指令会执行多次get命令。只是减少了网络IO的次数。
学会使用批量操作可以有效提高业务处理效率但是要注意每次批量操作所发送的键的数量也不是无节制的否则可能造成单⼀命令执行时间过长导致 Redis 阻塞。 SETNX
设置 key-value 但只允许在 key 之前不存在的情况下。 语法
SETNX key value
命令有效版本1.0.0 之后
时间复杂度O(1)
返回值1 表⽰设置成功。0 表⽰没有设置。 set 家族执行流程图 INCR
将 key 对应的 string 表⽰的数字加⼀。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对应的 string 不是⼀个整型或者范围超过了 64 位有符号整型则报错。
语法
INCR key
命令有效版本1.0.0 之后
时间复杂度O(1)
返回值integer 类型的加完后的数值。 INCRBY
将 key 对应的 string 表示的数字加上对应的值。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对应的 string 不是⼀个整型或者范围超过了 64 位有符号整型则报错。
语法
INCRBY key decrement
命令有效版本1.0.0 之后
时间复杂度O(1)
返回值integer 类型的加完后的数值。 DECR
将 key 对应的 string 表示的数字减⼀。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对应的 string 不是⼀个整型或者范围超过了 64 位有符号整型则报错。
语法
DECR key
命令有效版本1.0.0 之后
时间复杂度O(1)
返回值integer 类型的减完后的数值 DECYBY
将 key 对应的 string 表示的数字减去对应的值。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对应的 string 不是⼀个整型或者范围超过了 64 位有符号整型则报错。 语法
DECRBY key decrement
命令有效版本1.0.0 之后
时间复杂度O(1)
返回值integer 类型的减完后的数值。 INCRBYFLOAT
将 key 对应的 string 表⽰的浮点数加上对应的值。如果对应的值是负数则视为减去对应的值。如果 key 不存在则视为 key 对应的 value 是 0。如果 key 对应的不是 string或者不是⼀个浮点数则报错。允许采⽤科学计数法表示浮点数。
语法
INCRBYFLOAT key increment
命令有效版本2.6.0 之后
时间复杂度O(1)
返回值加/减完后的数值。 很多存储系统和编程语言内部使⽤ CAS 机制实现计数功能会有⼀定的 CPU 开销但在 Redis 中完全不存在这个问题因为 Redis 是单线程架构任何命令到了 Redis 服务端都要顺序执行。
APPENP
如果 key 已经存在并且是⼀个 string命令会将 value 追加到原有 string 的后边。如果 key 不存在则效果等同于 SET 命令。
语法
APPEND KEY VALUE
命令有效版本2.0.0 之后
时间复杂度O(1). 追加的字符串⼀般⻓度较短, 可以视为 O(1).
返回值追加完成之后 string 的长度。 GETRANGE
返回 key 对应的 string 的子串由 start 和 end 确定左闭右闭。可以使⽤负数表示倒数。-1 代表倒数第⼀个字符-2 代表倒数第⼆个其他的与此类似。超过范围的偏移量会根据 string 的长度调整成正确的值
语法
GETRANGE key start end
命令有效版本2.4.0 之后
时间复杂度O(N). N 为 [start, end] 区间的长度. 由于 string 通常⽐较短, 可以视为是 O(1)
返回值string 类型的⼦串 SETRANGE
覆盖字符串的⼀部分从指定的偏移开始
语法
SETRANGE key offset value
命令有效版本2.2.0 之后
时间复杂度O(N), N 为 value 的长度. 由于⼀般给的 value 比较短, 通常视为 O(1).
返回值替换后的 string 的⻓度。 STRLEN
获取 key 对应的 string 的长度。当 key 存放的类似不是 string 时报错。
语法
STRLEN key
命令有效版本2.2.0 之后
时间复杂度O(1)
返回值string 的长度。或者当 key 不存在时返回 0。 三、内部编码
字符串类型的内部编码有三种
1、int8 个字节的长整型。
2、embstr小于等于 39 个字节的字符串。
3、raw大于 39 个字节的字符串。
Redis 会根据当前值的类型和长度动态决定使用哪种内部编码实现。