Redis 数据传输协议

Redis版本:Redis version 3.0.503
其它工具: windows 7 、 xshell 5
Redis 协议,理解这个可以写其它相应的客户端或者做数据同步

想查看的话, 可以使用 telnet 链接到服务器,然后执行相应命令,可以查看数据
基于TCP协议来做数据交换,默认端口: 6379
传递的数据都以crlf[\r\n]结尾

请求命令到服务器的命令协议格式,以二进程安全的形式传输:
*<参数个数>\r\n
$<参数1的字节数量>\r\n
<参数1数据>\r\n
......
$<参数N的字节数量>\r\n
<参数N的数据>\r\n
这个格式,可以在启用了AOF配置的时候,在AOF文件里面看到

回复客户端的协议一般格式:回复类型 参数数量 CRLF

回复类型:

"+" : 状态回复 [+PONG \r\n] # 执行 ping 命令返回的结果
"-" : 错误回复 [-ERR ... \r\n] # 出错,在-之后的最近一个空格,表示错误类型
":" : 整数回复 [:1 \r\n] # 整数,如执行 incr k1
    :<整数>
"$" : 批量回复 [$3...\r\n] # String类型的数据返回,可能返回$0 ; $6\r\nfoobar\r\n ;
  1. 第一字节为 "$" 符号
  2. 接下来跟着的是表示实际回复长度的数字值
  3. 之后跟着一个 CRLF
  4. 再后面跟着的是实际回复数据
  5. 最末尾是另一个 CRLF
"*" : 多条批量回复 [*2\r\n$5\r\nvalue\r\n$3\r\nken\r\n]
  参考下批量回复,有相同的地方
  *<条数>\r\n$<值1长度>\r\n值1\r\n....$<值N长度>\r\n值N\r\n
  如果有空元素的话,则值长度为 $-1
# 一般返回一个结果集,可能  返回 *0 或者 *-1

尝试看到效果可以用: telnet 访问,会有最原始的协议数据返回,效果如图:

telnet对Redis协议的体验

Tips: telnet 默认是不安装的,不过 xshell 默认自带了