Redis 命令返回值
# 40.Redis 命令返回值
之前我们在 redis-cli 执行命令的时候,总是能看到一些返回值;Redis 命令的返回值有 5 种类型,对于每种类型 redis-cli 的展现结果都不同,下面分别说明。
为了简便起见,后文中我们将用 redis>
表示 redis 127.0.0.1:6379>
。
# 状态回复
状态回复(status reply)是最简单的一种回复,比如向 Redis 发送 SET 命令设置某个键的值时,Redis 会回复状态 OK 表示设置成功。
redis> set username peterjxl
OK
2
# 错误回复
当出现命令不存在或命令格式有错误等情况时,Redis 会返回错误回复(error reply)。错误回复以(error)开头,并在后面跟上错误信息。如执行一个不存在的命令:
redis> ERRORCOMMEND
(error) ERR unknown command 'ERRORCOMMEND'
2
部分错误信息会以具体的错误类型开头,例如当通过 get 命令获取一个 List 类型的数据时,会提示 Operation 有误:
redis> LPUSH key 1
(integer) 1
redis> GET key
(error) WRONGTYPE Operation against a key holding the wrong kind of value
2
3
4
这里错误信息开头的“WRONGTYPE”就表示类型错误,这个改进使得在调试时能更容易地知道遇到的是哪种类型的错误。
# 整数回复
Redis 虽然没有整数类型,但是却提供了一些用于整数操作的命令,如递增键值的 INCR 命令会以整数形式返回递增后的键值。整数回复(integer reply)以(integer)开头,并在后面跟上整数数据:
redis> INCR foo
(integer) 1
2
# 字符串回复
字符串回复(bulk reply)是最常见的一种回复类型,当请求一个字符串类型键的键值或一个其他类型键中的某个元素时就会得到一个字符串回复。字符串回复以双引号包裹:
redis> GET foo
"1"
2
特殊情况是当请求的键值不存在时会得到一个空结果,显示为(nil)。如:
redis> GET noexists
(nil)
2
# 多行字符串回复
多行字符串回复(multi-bulk reply)同样很常见,如当请求一个非字符串类型键的元素列表时就会收到多行字符串回复。多行字符串回复中的每行字符串都以一个序号开头,如:
redis> lrange myList 0 -1
1) "c"
2) "b"
3) "a"
2
3
4
# 总结
对于 Redis 命令的返回类型,读者了解即可,不用死记硬背。