Redis入门指南 第3章 Redis的5种主要数据类型及相应的命令(一) 字符串类型

一、介绍
  • 字符串类型是 Redis 中最基本的数据类型,它能存储任何形式的字符串,包括二进制数据。你可以用其存储用户的邮箱、JSON 化的对象甚至是一张图片。一个字符串类型键允许存储的数据的最大容量是 512 MB
  • 字符串类型是其他 4 种类型的基础,其他数据类型和字符串类型的差别从某种角度来说只是组织字符串的形式不同。例如,列表类型是以列表的形式组织字符串,而集合类型是以集合的形式组织字符串
二、命令
  • 1.赋值与取值
  • SET 和 GET 是Redis中最简单的两个命令,它们实现的功能和编程语言中的读写变量相似,如 key = “hello” 在 Redis 中表示为:
redis> SET key hello
OK
  • 而如果想要读取键值则更为简单:
redis> GET key
"hello"
  • 其中,当键不存在的时候会返回空结果
  • 2.递增数字
  • 前面说到,字符串类型可以存储任何形式的字符串,当存储的字符串是整数形式时,Redis 提供了一个实用的命令 INCR,其作用是让当前键值递增,并返回递增后的值,用法为:
redis> INCR num
(integer) 1
redis> INCR num
(integer) 2
  • 当要操作的键不存在时会默认键值为 0,所以第一次递增后的结果为 1。而如果当键值不是整数时 Redis 会报错:
redis> SET foo lorem
OK
redis> INCR foo
(error) ERR value is not an integer or out of range
  • 3.增加指定的整数
  • INCRBY 命令与 INCR 命令基本一致,不过就是前者可以通过 increment 参数来指定一次增加的数值,用法如下:
redis> INCRBY bar 2
(integer) 2
redis> INCRBY bar 3
(integer) 5
  • 4.递减数字,减少指定的整数
  • DECR 命令与 INCR 命令的效果相反,而 DECRBY 命令则与 INCRBY 命令的效果相反,这不难理解,用法如下:
redis> DECR bar
(integer) 4
redis> DECRBY bar 2
(integer) 2
  • 5.增加指定浮点数
  • INCRBYFLOAT 命令类似 INCRBY 命令,差别是前者可以递增一个双精度浮点数,如:
redis> INCRBYFLOAT bar 2.7
"4.7"
  • 6.向尾部追加值
  • APPEND 作用是向键值的末尾追加 value。如果键不存在则将该键的值设置为 value,即相当于 SET key value。返回值是追加后字符串的总长度。用法如下:
redis> SET key hello
OK
redis> APPEND key " world!"
(integer) 12
  • 对 key 进行 APPEND 操作后它的值为 “hello world!”。APPEND 命令的第二个参数加了双引号,原因是该参数包含空格,在 redis-cli 中输入需要双引号以示区分
  • 7.获取字符串长度
  • STRLEN 命令返回键值的长度,如果键不存在则返回 0。例如:
redis> STRLEN key
(integer) 12
redis> SET key 你好
OK
redis> STRLEN key
(integer) 6
  • 前面提到了字符串类型可以存储二进制数据,所以它可以存储任何编码的字符串。上述例子中所使用的中文使用的是 UTF-8 编码,而由于 “你” 和 “好” 两个字的 UTF-8 编码长度都为 3,因此所返回的长度为6
  • 8.同时设置/获取多个键值
  • MSET/MGET 命令与 SET/GET 命令其实是相似的,其不同就是 MSET/MGET 可以同时设置/获取多个键的键值。用法如下:
redis> MSET key1 v1 key2 v2 key3 v3
OK
redis> GET key2
"v2"
redis> MGET key1 key3
1) "v1"
2) "v3"