redis自学(24)RESP协议
Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和PubSub):
① 客户端(client)向服务端(server)发送一条命令
② 服务端解析并执行命令,返回响应结果给客户端
因此客户端发送命令的格式、服务端相应结果的格式必须有一个规范,这个规范就是通讯协议。
而在Redis中采用的是RESP(Redis Serialization Protocol)协议:
- Redis 1.2版本引入了RESP协议
- Redis 2.0版本中成为与Redis服务端通信的标准,成为RESP2
- Redis 6.0版本中,从RESP2升级到了RESP3协议(两个协议兼容性差),增加了更多数据类型并且支持6.0的新特性--客户端缓存
但目前,默认使用的依然是RESP2协议,也就是当前要学习的版本。
RESP协议-数据类型
在RESP中,通过首字节的字符来区分不同数据类型,常用的数据类型包括5种:
- 单行字符串:首字节是“+”,后门跟上单行字符串,以CRLF(“\r\n”)结尾。例如返回“OK”:“+OK\r\n”(和SDS一样,\r\n不能出现在字符串中间,是二进制不安全的),常见于服务端返回的结果
- 错误(Errors):首字节是“-”,与单行字符串格式一样,只是字符串是异常信息,例如:“-Error message\r\n”,一般情况下,是服务端响应的结果
- 数值:首字节是“:”,后面跟上数字格式的字符串,以CRLF结尾。例如“:10\r\n”
- 多行字符串:首字节是“$”,表示二进制安全的字符串,最大支持521MB:
如果大小为0,则代表空字符串:“$0\r\n\r\n”
如果大小为-1,则代表不存在:“$-1\r\n”
- 数组:首字节是“*”,后面更上数组元素个数,再跟上元素,元素数据类型不限:
这是一个发送set的redis命令
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南