小程序快速建站,建设标准网站,甘肃第九建设集团公司网站,中石化石油工程建设公司网站目录 String字符串
常见命令
SET
GET
MGET
MSET
SETNX
计数命令
INCR
INCRBY
DECR
DECRBY
INCRFLOAT
其它命令 APPEND
GETRANGE
SETRANGE
STRLEN String字符串
字符串是Redis最基础的数据类型, 关于字符串需要特别注意: (1)首先Redis中所有的键的类型都是字符…目录 String字符串
常见命令
SET
GET
MGET
MSET
SETNX
计数命令
INCR
INCRBY
DECR
DECRBY
INCRFLOAT
其它命令 APPEND
GETRANGE
SETRANGE
STRLEN String字符串
字符串是Redis最基础的数据类型, 关于字符串需要特别注意: (1)首先Redis中所有的键的类型都是字符串类型, 而且其它几种数据结构也是在字符串类型的基础上构建的, 例如列表和集合的元素都是字符串类型, 所以字符串类型能为其它4种数据结构的学习奠定基础. (2)其次, 如图, 字符串类型的值实际可以是字符串, 包含一般格式的字符串类似JSON, XML格式的字符串; 数字, 可以是整型或者浮点型; 甚至是二进制数据, 例如图片, 音频等. 不过一个字符串的最大值不能超过512MB. 由于Redis内部存储的字符串完全是按照二进制流的形式保存的, 所以Redis是不处理字符集编码问题的, 客户端传入的命令中使用的是什么字符集编码, 就存储什么字符集编码. 常见命令
SET
将string类型的value设置到key中. 如果key之前存在, 则覆盖, 无论原来的数据类型是什么. 之前关于此key的TTL也全部失效.
语法: SET key value [expiration EX seconds | PX milliseconds] [NX|XX] 命令有效版本: 1.0.0之后. 时间复杂度:O(1)
选项: 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. SETNX
设置key-value但只允许在key之前不存在的情况下.
语法: SETEX key value 命令有效版本: 1.0.0之后 时间复杂度: O(1)
返回值: 1表示设置成功. 0表示没有设置.
示例: 计数命令
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表示的数字-1. 如果key不存在, 则视为key对应的value是0. 如果key对应的string不是一个整型或者范围超过了64位有符号整型, 则报错.
语法: DECR key 命令有效版本: 1.0.0之后 时间复杂度: O(1)
返回值: integer类型减完后的值.
DECRBY
将key对应的string表示的数字减去对应的值. 如果key不存在, 则视为key对应的value是0. 如果key对应的string不是一个整型或者范围超过了64位有符号整型, 则报错.
语法: DECRBY key decrement 命令有效版本: 1.0.0之后. 时间复杂度: O(1)
返回值: integer类型减完后的数值.
INCRFLOAT
将key对应的string表示的浮点数加上对应的值. 如果对应的值是负数, 则视为减去对应的值(因此没有DECRFLOAT). 如果key不存在, 则视为key对应的value是0. 如果key对应的不是string, 或者不是一个浮点数, 则报错. 允许采用科学计数法表示浮点数.
语法: INCRBYFLOAT key increment 命令有效版本: 2.6.0之后 时间复杂度: O(1)
返回值: 加/减完后的数值.
示例: 很多存储系统和编程语言内部使用CAS机制实现计数功能, 会有一定的CPU开销, 但在Redis中完全不存在这个问题, 因为Redis是单线程架构, 任何命令到了Redis服务端都要顺序执行.
其它命令 APPEND
如果key已经存在并且一个是string, 命令会将value追加到原有string的后面. 如果key不存在, 则效果等同于SET命令.
语法: APPEND KEY VALUE 命令有效版本: 2.0.0之后. 时间复杂度:O(1). 追加的字符串长度比较短, 可以视为O(1).
返回值: 追加完成之后string的长度.
示例: GETRANGE
返回key对应的string的字串, 由start和end确定(左闭右闭) . 可以使用负数表示倒数. -1代表倒数第一个字符, -2表示倒数第二个. 0是正数开始. 超过范围的偏移量会根据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.