Redis通信协议详解

一、通信协议

实现一个Redis客户端,第一步要了解client和server之间的通信协议。Redis的client和server之间可以通过两种方式通信:RESP和inline Command。

1.RESP

(1)RESP协议用来规定Redis客户端发送命令的格式和Redis服务端响应消息的格式。

(2)全称:REdis Serialization Protocol. (3)特点:二进制安全,通过在request中加一个长度标识(prefixed lengths)实现的。 (4)request格式:

  • 数组大小 回车换行 [命令参数1字节数 回车换行 命令参数1 回车换行]+

(5)response格式:

  • 状态回复(status reply)的第一个字节是 "+"

  • 错误回复(error reply)的第一个字节是 "-"

  • 整数回复(integer reply)的第一个字节是 ":"

  • 批量回复(bulk reply)的第一个字节是 "$"

  • 多条批量回复(multi bulk reply)的第一个字节是 "*"

例如:request:"*3\r\n$3\r\nset\r\n$3\r\nkey\r\n$5\r\nvalue\r\n",

*3:长度为3的数组

\r\n:回车换行

$3:下一行字符串个数为3

set:长度为3的字符串

  response:+OK

2.inline command

inline command是直接把Redis拼成一个普通字符串发送给Redis服务端,不是二进制安全的。

例如:request:"set key value",

         response:+OK

3.RESP和nline Command的区别

RESP request的key和value可包含"\r\n"等特殊字符,且不会被服务端当做特殊字符处理,而Inline Command不可以。

二,为什么redis快

数据都存在内存,IO多路复用,单线程

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值