侧边栏壁纸
博主头像
月伴飞鱼 博主等级

行动起来,活在当下

  • 累计撰写 126 篇文章
  • 累计创建 31 个标签
  • 累计收到 1 条评论

目 录CONTENT

文章目录

Redis使用什么协议进行通信?

月伴飞鱼
2025-03-25 / 0 评论 / 1 点赞 / 12 阅读 / 0 字
温馨提示:
部分素材来自网络,若不小心影响到您的利益,请联系我们删除。

Redis 使用 RESP(REdis Serialization Protocol) 协议进行客户端与服务端之间的通信。

RESP 是 Redis 特有的文本协议,设计简单、高效,并且易于解析,广泛用于 Redis 的请求/响应模式。

它是基于 TCP 协议 的,客户端向 Redis 发送请求,Redis 服务器根据请求进行处理,并返回响应。

RESP 协议的特点:

  1. 请求/响应模式:每条请求由多个参数组成,响应以对应的格式返回。

  2. 基于文本:协议内容是文本格式,方便调试和理解。

  3. 行结束符:请求和响应都以 \r\n(回车换行符)作为结束标志。

  4. 多种数据类型支持:支持字符串、整数、数组等数据类型。

请求格式:

请求包含多个部分,具体格式如下:

  • *<number of arguments>\r\n:请求参数的个数

  • $<length of argument>\r\n:参数的长度

  • <argument data>:具体的参数数据

示例:

1. 请求:

假设我们想要执行一个 SET 操作,设置键 mykey 的值为 myvalue,请求格式如下:

*3\r\n
$3\r\n
SET\r\n
$5\r\n
mykey\r\n
$7\r\n
myvalue\r\n
  • *3 表示请求有 3 个参数。

  • $3 表示第一个参数 "SET" 的长度为 3 个字节。

  • $5 表示第二个参数 "mykey" 的长度为 5 个字节。

  • $7 表示第三个参数 "myvalue" 的长度为 7 个字节。

2. 响应:

Redis 处理完请求后,会返回响应,格式如下:

+OK\r\n

+OK\r\n

  • +OK 表示操作成功。

RESP 协议数据类型:

  1. 字符串类型:以 $ 开头,后面跟着字符串的长度和内容。例如,$5\r\nhello\r\n 表示字符串 "hello"

  2. 整数类型:以 : 开头,后面跟着整数的值。例如,:100\r\n 表示整数 100

  3. 错误类型:以 - 开头,后面跟着错误信息。例如,-ERR unknown command\r\n 表示错误信息。

  4. 数组类型:以 * 开头,后面跟着数组的元素个数。例如,*2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n 表示包含两个元素的数组:["foo", "bar"]

高级功能:

除了基础的 GET、SET 操作外,RESP 协议还支持:

  • 事务:通过 MULTI、EXEC 等命令进行事务操作。

  • 管道:通过一次发送多个命令,减少网络延迟。

  • Lua 脚本:支持使用 Lua 脚本进行复杂的操作。

总的来说,RESP 协议以简单、灵活、高效的特点支持了 Redis 的各种操作,确保了 Redis 的高性能。

公众号.png

1
  1. 支付宝打赏

    qrcode alipay
  2. 微信打赏

    qrcode weixin
    1. 支付宝打赏

      qrcode alipay
    2. 微信打赏

      qrcode weixin
博主关闭了所有页面的评论