Redis 通讯协议分析

来源:互联网 发布:linux vi复制粘贴命令 编辑:程序博客网 时间:2024/05/17 04:02

1.协议简介

Redis的客户端与服务端采用一种叫做 RESP(REdis Serialization Protocol) 的网络通信协议交换数据。 这种协议采用明文传输,易读也易解析。Redis客户端采用此协议格式来对服务端发送不同的命令,服务端会根据具体的操作而返回具体的答复。客户端和服务端采用的是简单的请求-响应模型进行通信的。


2.协议格式

协议的第一个字符就表示当前包的类型,数据是以\r\n进行换行的,现在有如下几种类型:

1.状态消息(+),一般表示正确的状态消息。字符后面是具体消息。例如操作OK对应的消息格式为:+OK\r\n

2.错误消息(-),一般表示操作出错消息。字符后面则是消息内容。 例如一个key不存在对应的消息格式为:-No such key\r\n

3.整数(:),表示数字。例如strlen命令的操作返回则是此种类型。例如key为a的字符串值为abc,则strlen命令返回的消息格式为::3\r\n

4.字符串($),表示字符串。例如key为a的字符串值为abc,则get a命令返回的是 $3\r\nabc\r\n,字符后面的数字表示字符串长度,后面则是数据内容

5.批量字符串(*),表示多个字符串。例如key为a的字符串值为abc,key为b的字符串值为xyz,则 mget a b 命令返回的消息格式是:*2\r\n$3\r\nabc\r\n$3\r\nxyz\r\n。字符后面的数字表示后面有多少个字符串。


3.命令测试

set name admin
Request:
*3\r\n
$3\r\n
set\r\n
$4\r\n
name\r\n
$5\r\n
admin\r\n

Response:
+OK\r\n

get name
Request:
*2\r\n
$3\r\n
get\r\n
$4\r\n
name\r\n

Response
$5\r\n
admin\r\n


get age
Request:
*2\r\n
$3\r\n
get\r\n
$3\r\n
age\r\n

Response:
:-1\r\n

0 0
原创粉丝点击