本文主要是介绍Redis通信协议详解,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
一、通信协议
实现一个Redis客户端,第一步要了解client和server之间的通信协议。Redis的client和server之间可以通过两种方式通信:RESP和inline Command。
1.RESP
(1)RESP协议用来规定Redis客户端发送命令的格式和Redis服务端响应消息的格式。
(2)全称:REdis Serialization Protocol. (3)特点:二进制安全,通过在request中加一个长度标识(prefixed lengths)实现的。 (4)request格式:
-
数组大小 回车换行 [命令参数1字节数 回车换行 命令参数1 回车换行]+
(5)response格式:
-
状态回复(status reply)的第一个字节是
"+"
-
错误回复(error reply)的第一个字节是
"-"
-
整数回复(integer reply)的第一个字节是
":"
-
批量回复(bulk reply)的第一个字节是
"$"
-
多条批量回复(multi bulk reply)的第一个字节是
"*"
例如:request:"*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n",
*3:长度为3的数组
\r\n:回车换行
$3:下一行字符串个数为3
set:长度为3的字符串
response:+OK
2.inline command
inline command是直接把Redis拼成一个普通字符串发送给Redis服务端,不是二进制安全的。
例如:request:"set key value",
response:+OK
3.RESP和nline Command的区别
RESP request的key和value可包含"\r\n"等特殊字符,且不会被服务端当做特殊字符处理,而Inline Command不可以。
二,为什么redis快
数据都存在内存,IO多路复用,单线程
这篇关于Redis通信协议详解的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!