以下は、C をクライアント、S をサーバとした通信例。
C: PING S: +PONG
クライアントが CRLF で終了するインラインコマンドをサーバに送ると、サーバは以下のいずれかの種類の応答を返す。
以下、整数が返るインラインコマンド。
C: EXISTS someky S: :0
バルクコマンドはインラインコマンドと全くだが、サーバにデータを送信するために、コマンドの最後の引数が送信するストリームのバイト数でなければならない。
以下は、SET コマンドの例。
C: SET mkey 6 C: foobar S: +OK
サーバはインラインコマンドおよびバルクコマンドにバルクリプライを返す。
C: GET mkey S: $6 S: foobar
指定したキーに対応する値がなければ、特別な値である "-1" を返す。
C: GET notexistingkey S: $-1
LRANGE の様なコマンドは、複数の値を返す必要がある。最初の行で後にいくつの塊が続くかを示す事で、実現している。
C: LRANGE mylist 0 3 S: *4 S: $3 S: foo S: $3 S: bar S: $5 S: Hello S: $5 S: World
C: LRANGE nokey 0 1 S: *-1
要素が失われて空文字列ではない事を示すために、マルチバルクリプライの要素に長さ -1 を示すものがあるかもしれない。 これは、指定したキーが失われた時に GET パターンオプションを使った SORT コマンドで起きる事がある。
S: *3 S: $3 S: foo S: $-1 S: $3 S: bar
["foo",nil,"bar"]
"+" で始まり "\r\n" で終わる、単一行のリプライ。
S: +OK
例えば、 以下のコマンドは応答コードを返す。
Keyword(s):[kvs] [redis]
References: