您的位置:首页 > 教育 > 锐评 > Redis客户端-RESP的简简单单介绍

Redis客户端-RESP的简简单单介绍

2025/8/30 0:46:37 来源:https://blog.csdn.net/2301_79450337/article/details/140992841  浏览:    关键词:Redis客户端-RESP的简简单单介绍

介绍RESP协议

  • 之前学习的主要是各种redis的基本操作/命令,都是在redis命令行客户端,手动执行的,更多的时候,是使用redis的api,来实现定制化的redis客户端程序,进一步操作redis服务器
  • 联想到之前学习过的JDBC/MyBatis可以实现,redis提供的命令行客户端/第三方的图形化客户端,它们本质上都属于是”通用的客户端程序“,相比之下,我们更希望用到”专用的“,”定制化“的客户端程序,redis命令相当于使用代码来执行
  • 为什么我们能编写出一个自定义的redis客户端,那咱们能不能编写出一个qq的自定义客户端/王者农药的自定义客户端/xxxx自定义客户端

网络协议:

应用层:虽然业界有很多成熟的应用层协议:HTTP协议等,但是此处更多的时候,都会”自定义“应用层协议,Redis此处应用层协议,就是自定义的协议,传输层还是基于TCP(客户端按照这里的应用层协议发送请求,服务器按照这个协议进行解析,再按照这个协议构造响应,客户端再介意这个响应)咱们作为第三方,要想开发一个redis客户端也就需要知道redis的应用层协议

  • 之所以上述通信能够完成,是因为开发客户端的人和开发服务器的人都清楚的知道协议的细节
  • 以下协议是固定好的,是在系统内核或者驱动程序中实现的,只能选择,不能修改

传输层:TCP/UDp协议 | 网络层:IP协议 | 数据链路层:以太网 | 物理层

Redis自定义的应用层协议的名字-RESP

不能编写自定义的qq/王者农药客户端,因为他们并没有公开协议的,但是网上还是有一些自定义的qq自定义的客户端啊?这是因为通过一些抓包/逆向手段,猜测qq的应用层协议是啥样的,猜多猜少靠水平+运气了

RESP优点:

  • 简单好实现
  • 快速进行协议
  • 肉眼可读

传输层基于TCP,但是和TCP又没有强耦合,请求和响应之间的通信模型是一问一答的形式,客户端给服务器发一个请求,服务器给客户端返回一个响应

RESP协议的描述:

客户端给服务器发送的是redis命令(bulk string),不同的命令返回结果不一样,有的命令返回OK,有的命令返回整数,有的返回个数组,交代了请求和响应的格式

RESP协议的具体数据格式符号

如果是+,则是简单字符串

服务器就把这个字符串,写入到tcp socket中即可,simple string只能当作简单文本

服务器也把这个字符串也写到tcp socket中

服务器把整数写到tcp socket中

服务器把bulk string写到tcp socket中,可以传输二进制数据

因此,redis客户端服务器要做的工作

  • 按照上述格式,构造出字符串,往socket中写入
  • 从socket中读取字符串,按照上述格式解析

Question:那么写代码要按照上述的协议,解析/构造字符串嘛?


Answer:不用,因为这套协议,公开已久,已经有很多大佬实现了这套协议的解析构造,这些大佬提供的库,就可以比较简单方便的来完成和redis服务器通信的操作了

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com