Redis中嵌套的多批量回复

时间:2013-03-03 17:02:07

标签: redis

redis protocol specification的“多批量回复”部分下:

  

多批量回复用于返回其他回复的数组。 Multi Bulk Reply的每个元素都可以是任何类型,包括嵌套的Multi Bulk Reply。

但是,我无法想办法让Redis返回这样的输出。任何人都可以提供一个例子吗?

1 个答案:

答案 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;博士:基本没有限制。