1

redisプロトコル仕様の「マルチバルク応答セクション」の下:

マルチバルク応答は、他の応答の配列を返すために使用されます。マルチバルク応答のすべての要素は、ネストされたマルチバルク応答を含め、どのような種類でもかまいません。

ただし、Redisにそのような出力を返す方法がわかりません。誰かが例を提供できますか?

4

1 に答える 1

1

特定のコマンド(特に値のリストを返すコマンド)のみがマルチバルク応答を返します。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:基本的に制限はありません。

于 2013-03-03T18:48:30.053 に答える