redis自2.0版本使用RESP协议(redis serialization protocal)。RESP协议是一个二进制安全的文本协议,该协议工作于TCP之上,以\r\n为结尾。
二进制安全协议:该协议表示任意字符都可以出现。例如,C语言字符串中以‘\0’结尾,所以‘\0’不允许出现在字符串中,因此C语言的string不是二进制安全的。
RESP定义了5种格式:
- 简单字符串 simple string
- 错误信息 error
- 整数 integer
- 字符串 bulk string
- 数组 array / muti bulk string
RESP通过第一个字符来表示格式:
- 简单字符串 ‘ +’。 例: “+OK\r\n”
- 错误 : ‘-’
- 整数: ‘:’
- 字符串: “$”
- 数组: “*”
常见的例子: ”*2$3SET$3key$5value“ 表示: SET key value