redisプロトコル仕様の「マルチバルク応答セクション」の下:
マルチバルク応答は、他の応答の配列を返すために使用されます。マルチバルク応答のすべての要素は、ネストされたマルチバルク応答を含め、どのような種類でもかまいません。
ただし、Redisにそのような出力を返す方法がわかりません。誰かが例を提供できますか?
redisプロトコル仕様の「マルチバルク応答セクション」の下:
マルチバルク応答は、他の応答の配列を返すために使用されます。マルチバルク応答のすべての要素は、ネストされたマルチバルク応答を含め、どのような種類でもかまいません。
ただし、Redisにそのような出力を返す方法がわかりません。誰かが例を提供できますか?
特定のコマンド(特に値のリストを返すコマンド)のみがマルチバルク応答を返します。LRANGE
たとえば、を使用して試すことができますが、詳細についてはコマンドリファレンスを確認できます。
通常、マルチバルク応答は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"
マルチバルク応答の2番目の要素は、マルチEXEC
バルクitsefです。
PS:Luaスクリプトを使用する場合の、マルチバルク応答の実際の最大ネストレベルに関する説明をコメントに追加しました。tl; dr:基本的に制限はありません。