在redis protocol specification的“多批量回复”部分下:
多批量回复用于返回其他回复的数组。 Multi Bulk Reply的每个元素都可以是任何类型,包括嵌套的Multi Bulk Reply。
但是,我无法想办法让Redis返回这样的输出。任何人都可以提供一个例子吗?
答案 0 :(得分:1)
只有某些命令(特别是返回值列表的命令)会返回多批量回复,您可以尝试使用LRANGE
,但您可以查看command reference了解更多详情。
通常,多批量回复只有1级深度,但有些Redis命令可以返回嵌套的多批量回复(最多2个级别),特别是EXEC
(取决于在事务上下文中执行的命令)和EVAL
/ EVALSHA
(取决于Lua脚本返回的值)。
以下是使用EXEC
的示例:
redis 127.0.0.1:6379> MULTI
OK
redis 127.0.0.1:6379> LPUSH metavars foo foobar hoge
QUEUED
redis 127.0.0.1:6379> LRANGE metavars 0 -1
QUEUED
redis 127.0.0.1:6379> EXEC
1) (integer) 4
2) 1) "hoge"
2) "foobar"
3) "foo"
4) "metavars"
对EXEC
的多批量回复的第二个元素是多批量回复。
PS :我在评论中添加了关于使用Lua脚本时多批量回复嵌套的实际最高级别的说明。 tl;博士:基本没有限制。