Redis RESP协议

原文: https://redis.io/topics/protocol

Reids客户端和redis服务器交流使用RESP协议(redis序列化协议),这个协议是设计是服务于redis的,在其他客户端-服务器软件工程中也可以使用这个协议。

RESP特点:简单实现,快速解析,人类可读

RESP可以序列化不同的数据类型如integers/strings/arrays。同时也定义了错误的专用类型。Redis客户端使用strings数组代表需要执行的命令,发送请求给服务端。Redis响应数据类型专用命令。

注意:协议只适用与客户端服务端交流,redis cluster使用不同的二进制协议交换节点之间的数据。

  • 网络层

客户端连接redis服务器在6379端口创建了一个TCP 连接

虽然RESP在技术上是非TCP特定的 , 但在Redis的上下文中,协议仅用于TCP连接(或者面向流的连接如unix套接字)

  • 请求应答模型

Redis接受由不同参数组成的命令。 收到命令后,将对其进行处理,并将回复发送回客户端。

  • RESP协议描述

RESP从Redis 1.2开始使用,Redis 2.0开始成为Redis服务器标准的交互方式,需要在你的redis客户端中实现。

RESP是一个序列化协议支持如下数据类型:Simple Srings/Errors/Integers/Bulk Strings/Arrays。

RESP在redis中是一个请求应答协议

--客户端以Bulk Strings数组形式,发送命令给redis服务器

--服务器根据命令的实现回复一种RESP 类型

在RESP中,数据的类型依赖于第一个字节

--简单字符串(Simple Strings),第一个字节为”+”

--错误(Errors), 第一个字节为“-”

--整型(Integers), 第一个字节为“:”

--Bulk Strings, 第一个字节为“$”

--数组(Array),第一个字节为“*”

RESP 使用特殊的Bulk Strings变量来表示空值

RESP的不同部分始终使用”\r\n”(CRLF)结束

  • RESP简单字符串(Simple Strings)

简单字符串按以下方式编码:加号字符,后跟不能包含CR或LF字符的字符串(不允许换行),使用CRLF终止(即“\ r \ n”)。

Simple Strings用于以最小的开销传输非二进制安全字符串。例如,许多Redis命令在成功时仅回复“OK”, RESP Simple String使用以下5个字节进行编码:

"+OK\r\n"

为了发送二进制安全字符串,使用RESP Bulk Strings。

当Redis使用Simple String回复时࿰

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值