Redis通信プロトコルとは何ですか
RESPとはREdis Serialization Protocolの略でredis専用のシリアル化プロトコルで、
実際にはredisバージョン1.2から登場したプロトコルですが、redis2.0で最終的にredis通信プロトコルの標準となりました。
Redis通信プロトコル(RESP)の形式
Redis 通信プロトコルは最初に複数の行に分割され、各行は \r\n 行で終わります。各行にはメッセージヘッダーがあり、次の 5 種類に分類されます。
+表示一个正确的状态信息,具体信息是当前行+后面的字符。
-表示一个错误信息,具体信息是当前行-后面的字符。
* 表示消息体总共有多少bulk行,不包括当前行,*后面是具体的行数。
$表示下一行数据长度,不包括换行符长度\r\n,后面则是对应的长度的数据。
:表示返回一个数值,:后面是相应的数字节符。
例1
コマンド「set aqin 1」は一般的に
*3\r\n$3\r\nset\r\n$4\r\naqin\r\n$1\r\n1\r\n普通の人には理解できません。便宜上、理解するために
上記の例をフォーマットします
*3\r\n -- 这个命令包含3个(bulk)字符串
$3\r\n -- 第一个bulk string有3个字节
set\r\n -- 第一个bulk string是set
$4\r\n -- 第二个bulk string有4个字节
aqin\r\n -- 第二个bulk string是agan
$1\r\n -- 第三个bulk string有1个字节
1\r\n -- 第三个bulk string是1
実行すると以下が返されます:
+OK\r\n
例2
コマンド "get aqin":
*2\r\n$3\r\nget\r\n$4\r\naqin\r\nつまり
:
*2\r\n -- 这个命令是2个bulk字符串的数组
$3\r\n -- 第一个bulk字符串有3个字节: get
get\r\n
$4\r\n -- 第二个bulk字符串有4个字节: aqin
aqin\r\n
テストと検証
Telnet を使用する、接続方法は次のとおりです:
Telnet
接続が成功した後、redis がパスワードを設定している場合は、パスワード認証も必要です。この時点で、redis との通信は実際に確立されており、redis コマンドの auth 認証を使用できます。認証コマンド
:
キー
bodeMacBook-Pro:~ bo$ telnet xx.xx.xx.xx:xxxx
Trying xx.xx.xx.xx
Connected to xx.xx.xx.xx
Escape character is '^]'.
auth aqin
+OK
keys *
*13
$4
key9
$4
aqin
$4
key4
$4
key3
$4
key6
$4
各コマンドは RESP 形式を返します (\r\n は表示されず、改行として反映されます)。
コマンド: set aqin 1
set aqin 1
+OK
コマンド: aqin を取得
get aqin
$1
1
Telnet を使用して RESP 形式で「get agan」を実行します: *2\r\n$3\r\nget\r\n$4\r\naqin\r\n
*2
$3
get
$4
aqin
$1
1