redis客户端与服务器通讯时用了redis自己设计的RESP (REdis Serialization Protocol)协议。
RESP协议用了多种符号的前辍来请求与回复数据,以表明不同种类的数据类型。一、redis客户端向服务器发送数据的格式为:
"*Arraysnumber\r\n"
"$number\r\nstr\r\n"
说明:
Arraysnumber: 为命令、key、value的个数。
number: 为每个字符串的字符数。
str: 为命令、key、value等。
(CRLF)\r\n: 回车换行,原于英文机械打字机,
例子:SET CAT MQ
"*3\r\n"
"$3\r\nSET\r\n"
"$3\r\nCAT\r\n"
"$1\r\nMQ\r\n"
二、 redis服务器返回给客户端结果有5种格式
1. 简单的符串(Simple Strings),首字节为"+"
例子:
set cat mq
返回:"+OK\r\n"
2. 整数,首字节为":"
例子:
set cat 1
incr cat
返回:":2\r\n"
3. 数组,首字节为"*"
例子:
hmget onehash cat dog
返回:"*2\r\n$2\r\nmq\r\n$4\r\nlulu\r\n"
4. 字符串块,首字节为"$"
例子:
get cat
返回:"$2\r\nmq\r\n"
5. 错误消息,首字节为"-"
例子:
get cat p
返回:"-ERR wrong number of arguments for 'get' command\r\n"