11-命令返回值
2.3.2 命令返回值
在大多数情况下,执行一条命令后我们往往会关心命令的返回值,如1.2.4节中的HGET命令的返回值就是我们需要的指定键的title字段的值。命令的返回值有5种类型,对于每种类型redis-cli的展现结果都不同,下面分别说明。
1.状态回复
状态回复(status reply)是最简单的一种回复,例如,向Redis发送 SET 命令设置某个键的值时,Redis会回复状态 OK 表示设置成功。另外之前演示的对 PING 命令的回复 PONG 也是状态回复。状态回复直接显示状态信息,如:
redis>PING
PONG
2.错误回复
当出现命令不存在或命令格式有错误等情况时Redis会返回错误回复(error reply)。错误回复以 (error) 开头,并在后面跟上错误信息。如执行一个不存在的命令:
redis>ERRORCOMMEND
(error) ERR unknown command 'ERRORCOMMEND'
在2.6版本时,错误信息均是以“ERR”开头,而在2.8版以后,部分错误信息会以具体的错误类型开头,如:
redis>LPUSH key 1
(integer) 1
redis>GET key
(error) WRONGTYPE Operation against a key holding the wrong kind of value
这里错误信息开头的“WRONGTYPE”就表示类型错误,这个改进使得在调试时能更容易地知道遇到的是哪种类型的错误。
3.整数回复
Redis虽然没有整数类型,但是却提供了一些用于整数操作的命令,如递增键值的 INCR 命令会以整数形式返回递增后的键值。除此之外,一些其他命令也会返回整数,如可以获取当前数据库中键的数量的 DBSIZE 命令等。整数回复(integer reply)以 (integer) 开头,并在后面跟上整数数据:
redis>INCR foo
(integer) 1
4.字符串回复
字符串回复(bulk reply)是最常见的一种回复类型,当请求一个字符串类型键的键值或一个其他类型键中的某个元素时就会得到一个字符串回复。字符串回复以双引号包裹:
redis>GET foo
"1"
特殊情况是当请求的键值不存在时会得到一个空结果,显示为 (nil) 。如:
redis>GET noexists
(nil)
5.多行字符串回复
多行字符串回复(multi-bulk reply)同样很常见,如当请求一个非字符串类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开头,如:
redis>KEYS *
1) "bar"
2) "foo"
提示
KEYS命令的作用是获取数据库中符合指定规则的键名,由于读者的Redis中还没有存储数据,所以得到的返回值应该是(
empty list or set)。3.1节会具体介绍KEYS命令,此处读者只需了解多行字符串回复的格式即可。