从零开始Redis(五):通讯协议

前言

本节将介绍一下redis的通信协议

通信协议

Redis是单进程单线程的。
应用系统和Redis通过Redis协议(RESP)进行交互。

请求响应模式

Redis协议位于TCP层之上,即客户端和Redis实例保持双工的连接。
在这里插入图片描述

串行的请求响应模式(ping-pong)

串行化是最简单模式,客户端与服务器端建立长连接
连接通过心跳机制检测(ping-pong) ack应答
客户端发送请求,服务端响应,客户端收到响应后,再发起第二个请求,服务器端再响应。
在这里插入图片描述
telnet和redis-cli 发出的命令 都属于该种模式

特点:

  • 有问有答
  • 耗时在网络传输命令
  • 性能较低

双工的请求响应模式(pipeline)

批量请求,批量响应
请求响应交叉进行,不会混淆(TCP双工)
在这里插入图片描述
pipeline的作用是将一批命令进行打包,然后发送给服务器,服务器执行完按顺序打包返回
通过pipeline,一次pipeline(n条命令)=一次网络时间 + n次命令时间

其它响应模式

  • 原子化的批量请求响应模式(事务)
    Redis可以利用事务机制批量执行命令。
  • 发布订阅模式(pub/sub)
    发布订阅模式是:一个客户端触发,多个客户端被动接收,通过服务器中转。
  • 脚本化的批量执行(lua)
    客户端向服务器端提交一个lua脚本,服务器端执行该脚本。

请求数据格式

Redis客户端与服务器交互采用序列化协议(RESP)。
请求以字符串数组的形式来表示要执行命令的参数
Redis使用命令特有(command-specific)数据类型作为回复。

Redis通信协议的主要特点有:

  • 客户端和服务器通过 TCP 连接来进行数据交互, 服务器默认的端口号为 6379 。
  • 客户端和服务器发送的命令或数据一律以 \r\n (CRLF)结尾。
  • 在这个协议中, 所有发送至 Redis 服务器的参数都是二进制安全(binary safe)的。
  • 简单,高效,易读。

内联格式

可以使用telnet给Redis发送命令,首字符为Redis命令名的字符,格式为 str1 str2 str3…

[root@localhost bin]
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值