redis自学(24)RESP协议

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

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

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

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

而在Redis中采用的是RESPRedis 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

 

 

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

 

 

这是一个发送setredis命令

 

 

posted @ 2024-03-25 16:01  蓝海的bug本  阅读(13)  评论(0编辑  收藏  举报