Redis 通讯协议简单研究

1.Redis网络通讯协议

Redis底层网络通讯协议实际上是经过TCP来完成的。redis

2.Redis通讯协议

Redis的通讯协议首先是以行来划分,每行以\r\n行结束。每一行都有一个消息头,消息头共分为5种分别以下:
(+) 表示一个正确的状态信息,具体信息是当前行+后面的字符。
(-) 表示一个错误信息,具体信息是当前行-后面的字符。
(*) 表示消息体总共有多少行,不包括当前行,*后面是具体的行数。
(\() 表示下一行数据长度,不包括换行符长度\r\n,\)后面则是对应的长度的数据。
(:) 表示返回一个数值,:后面是相应的数字节符。
举个例子:缓存

*3\r\n  #消息一共有三行
$3\r\n #第一行有长度为3
set\r\n #第一行的消息
$4\r\n  #第二行长度为4 
demo\r\n #第二行的消息
$6\r\n #第三行长度为6
123456\r\n #第三行的消息
+OK\r\n #操做成功

3.使用Wireshark 追踪Redis通讯

本人使用的是mac电脑,如下都是在mac下的操做服务器

3.1安装redis

(1)直接使用命令安装网络

brew install redis

(2)启动redis-server架构

redis 默认开启6379端口tcp

redis-server /usr/local/etc/redis.conf  #启动的时候指定配置文件

效果图:
redis-serveroop

(3)使用redis-cli 链接redis-serverui

redis 能够看作是c/s架构的软件,再打开一个终端输入下面的指令spa

redis-cli -h 192.168.0.102 -p 6379

效果图:
redis-cli
(4)简单的操做一些
操做3d

keys *  # 查看所有的能够
set demo 123 #设置k-v
TTL demo #查看demo的时间
flushall #清除所有的缓存
quit #退出客户端

3.2 安装wireshark

wireshark是付费的,能够在网上查找体验版(破解版),有条件的建议购买正版。

(1)打开wirshark:
wrieshark

我这个地方选择的Loopback:lo0,由于我redis安装到本地了,实际上redis-server和redis-cli 都在127.0.0.1上,要选择该方式才能时间服务器端和客户端通讯。若是咱们经过redis-cli链接的是远程服务器上的redis-server,能够选择WI-FI:en0(我这里是这个网卡,可根据自身电脑选择相应的网卡)

(2) 追踪redis-cli 链接到服务时候的通讯
咱们追踪tcp流
追踪tcp流
获得以下结果
redis-cli.connection
咱们获得都是以 *,$,:,+等等来标注的。关于链接的操做太过于复杂,没有作详细的研究,下面看下简单的set指令。
redis-cli.set 能够看出跟咱们文章刚开始举得例子一致,redis就是采用这种通讯协议来通讯的,掌握了redis通讯协议,咱们能够本身实现一个redis客户端,这都是很简单的。

相关文章
相关标签/搜索