HELLO protover [AUTH username password] [SETNAME clientname]

接続を別のプロトコルに切り替えます。Redis バージョン 6 以降は、古いプロトコルである RESP2 と、Redis 6 で導入された新しいプロトコルである RESP3 をサポートします。RESP3 には、接続がこのモードの場合、Redis はよりセマンティックな応答で応答できるため、一定の利点があります: 例えば、HGETALLmap type を返すため、クライアントライブラリの実装では、配列を変換するために呼び出し元に返す前に前もって知っておく必要がなくなりました。RESP3 の完全なカバレッジについては、このレポジトリを調べてください

Redis 6 の接続は RESP2 モードで開始されるため、RESP2 を実装するクライアントを変更する必要はありません (RESP2 のサポートを終了する短期計画もありません)。RESP3 モードをハンドシェイクするクライアントは、最初の引数として "3" を使って、HELLO コマンドを呼び出す必要があります。

> HELLO 3
1# "server" => "redis"
2# "version" => "6.0.0"
3# "proto" => (integer) 3
4# "id" => (integer) 10
5# "mode" => "standalone"
6# "role" => "master"
7# "modules" => (empty array)

HELLO には、サーバに関する幾つかの事実を示す便利な応答があります: 正確なバージョン、ロードされたモジュールのセット、クライアント ID、レプリケーションロールなど。このため、また HELLO コマンドが引数として "2" でも機能することも考えると、プロトコルをバージョン 2 にダウングレードするため、またはプロトコルを切り替えずにサーバからの応答を取得するために、接続をセットアップする時に正規の PING の代わりにこのコマンドを使うことをクライアントライブラリの作成者は検討することができます。

このコマンドは2つの必須では無いオプションを受け付けます:

  • AUTH <username> <password>: 指定されたプロトコルに切り替える以外に、接続を直接認証します。このようにすると、新しい接続をセットアップする時に、HELLO の前に AUTH を呼び出す必要はありません。ACL を使わないサーバに対して認証するために、ユーザ名を "default" に設定できることに注意してください。ただし、バージョン 6 より前の Redis のより単純な requirepass の仕組みです。
  • SETNAME <clientname>: これは CLIENT SETNAME の呼び出しと同じです。

*返り値

Array reply: サーバプロパティのリスト。RESP3 が選択された場合、応答は配列では無くマップになります。要求されたプロトコルが存在しない場合、コマンドはエラーを返します。

TOP
inserted by FC2 system