Redis——通信协议

目录

1.RESP协议

2.RESP协议------数据类型

3.总结


1.RESP协议

Redis是一个CS架构的软件,通信一般分两步(不包括pipeline和pubsub):

1.客户端(client)向服务端(server)发送一条命令

2.服务端解析并执行命令,返回响应结果给客户端

因此客户端发送命令的格式,服务端响应结果的格式必须有一个规范,这个规范就是通信协议。

而在redis中采用的是RESP(redis serialization prot)协议:

  • Redis1.2版本引入了resp协议
  • Redis2.0版本中成为与redis服务端通信的标准,称为RESP2
  • Redis6.0版本中,从RESP2开级到了RESP3协议,增加了更多数据类型并且支持6.0的新特性一客户端缓存

但目前,为了兼容性问题,默认使用的依然时RESP2协议,也是我们要学习的协议版本(以下进程RESP)

2.RESP协议------数据类型

在RESP中,通过首字节的字符来区分不同数据类型,常用的数据类型包括5种:

单行字符串: 首字节是**'+'** ,后面跟上单行字符串,以CRLF("\r\n")结尾。例如返回"ok": "+ok\r\n"(二进制不安全)
错误(Errors): 首字节是**'-',与单行字符串格式一样,只是字符审是异常信息,例如:"-Errormessage\r\n"
数值: 首字节是
':',后面跟上数字格式的字符串,以CRLF结尾。例如:":10\r\n"
多行字符串: 首字节是
'$'** ,表示二进制安全的字符串,最大支持512MB**(二进制安全)**

  • 如果大小为0,则代表空字符串:"$0/r\n\r\n"
  • 如果大小为-1,则代表不存在:"$-1/r\n" 字符串占用

数组: 首字节是**'*'**,后面跟上数组元素个数,再跟上元素,元素数据类型不限。

3.总结

RESP 通信协议以其简洁、高效和易读的特点,成为了分布式系统和数据库领域的重要通信协议。无论是 Redis 开发者,还是从事分布式系统设计的工程师,掌握 RESP 协议的原理和应用都具有重要意义。

相关推荐
ltl4 小时前
Redis 紧凑编码:listpack、quicklist 与 intset
redis
野生技术架构师17 小时前
Redis 和 MySQL 如何保证数据一致性?先更新数据库还是先删缓存,延迟双删、MQ、Canal 一次讲透
数据库·redis·缓存
Devin~Y17 小时前
从内容社区到AI智能客服:Spring Boot + Spring Cloud + Spring AI 全栈实战面试拆解
java·spring boot·redis·elasticsearch·spring cloud·kafka·mybatis
2602_9599609217 小时前
电商大厂Java面试:从Spring Boot、JPA、微服务到Redis、Kafka、Spring Security与监控,谢飞机的爆笑三轮问答
java·jvm·spring boot·redis·面试题
愈努力俞幸运18 小时前
token,context window,top_p,temperature,skill,Harness Engineering
数据库·redis·缓存
Patrick在香港18 小时前
Claude API 成本直降90%:Prompt Caching 提示词缓存 Python 实战
python·缓存·prompt
谷哥的小弟2 天前
腾讯云服务器安装Redis Stack图文教程
服务器·redis·腾讯云·redis stack
NeilYuen2 天前
【vemory】高性能KV存储AOF方案设计
linux·c++·redis·缓存
LuminousCPP2 天前
数据结构基础篇(二):顺序表与链表全方位对比|从内存布局到 CPU 缓存理解底层差异
c语言·数据结构·经验分享·链表·缓存
spter。2 天前
Redis 与 Single-flight 的分工与协作
数据库·redis·缓存