Redis底层网络通讯协议实际上是经过TCP来完成的。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 #操做成功
本人使用的是mac电脑,如下都是在mac下的操做服务器
(1)直接使用命令安装网络
brew install redis
(2)启动redis-server架构
redis 默认开启6379端口tcp
redis-server /usr/local/etc/redis.conf #启动的时候指定配置文件
效果图:
oop
(3)使用redis-cli 链接redis-serverui
redis 能够看作是c/s架构的软件,再打开一个终端输入下面的指令spa
redis-cli -h 192.168.0.102 -p 6379
效果图:
(4)简单的操做一些
3d
keys * # 查看所有的能够 set demo 123 #设置k-v TTL demo #查看demo的时间 flushall #清除所有的缓存 quit #退出客户端
wireshark是付费的,能够在网上查找体验版(破解版),有条件的建议购买正版。
(1)打开wirshark:
我这个地方选择的Loopback:lo0,由于我redis安装到本地了,实际上redis-server和redis-cli 都在127.0.0.1上,要选择该方式才能时间服务器端和客户端通讯。若是咱们经过redis-cli链接的是远程服务器上的redis-server,能够选择WI-FI:en0(我这里是这个网卡,可根据自身电脑选择相应的网卡)
(2) 追踪redis-cli 链接到服务时候的通讯
咱们追踪tcp流
获得以下结果
咱们获得都是以 *,$,:,+等等来标注的。关于链接的操做太过于复杂,没有作详细的研究,下面看下简单的set指令。
能够看出跟咱们文章刚开始举得例子一致,redis就是采用这种通讯协议来通讯的,掌握了redis通讯协议,咱们能够本身实现一个redis客户端,这都是很简单的。