redis[0] 通讯报文协议

本文介绍了Redis的通讯协议RESP,详细解释了五种数据类型:SimpleStrings、Errors、Integers、BulkStrings、Arrays,并展示了它们的格式及应用场景。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

据说redis很牛逼,一直很想拜读下,今天终于开始行动了,希望自己能坚持下去;

下面是一些学习redis的通讯协议的笔记
学习材料:http://redis.io/topics/protocol [redis官网文档]

1、redis 中通讯协议是 RESP(REdis Serialization Protocol)
协议的设计原则:简单、解析速度快、易读(这里指的是对于人类来说可读性强,对象是人,不是机器)

2、RESP 是一种二进制安全的

3、协议中总共定义了五种数据类型:Simple Strings、Errors 、Integers 、Bulk Strings、Arrays
在协议中这五种数类型分别由五个符号代表
Simple Strings ————————– ‘+’
Errors ————————– ‘-’
Integers ————————– ‘:’
Bulk Strings ————————– ‘$’
Arrays ————————– ‘*’

4、每种数据的第一个字符就是其对应类型的符号

5、所有值都以 “\r\n” (CRLF) 结尾

下面分别说明这五种数据类型:
Simple Strings (‘+’) : 一个以 ‘+’开始,CRLF 结束的串,主要中间的值不能包含 结束符CR、LF
如:”+OK\r\n”

Errors(‘-‘) : 一个以 ‘-‘开始,CRLF 结束的串,主要中间的值不能包含 结束符CR、LF,值是错误信息
如:”-Error message\r\n”

Integers( ‘:’):一个以 ‘:’开始,CRLF 结束的串,值是一个 64 位的整数
如:”:1000\r\n”

Bulk Strings(‘$’):格式: ‘$’ + len + “\r\n” + val + “\r\n”
如:”$6\r\nfoobar\r\n” 表示值 “foobar”

Arrays( ‘*’) : 格式: ‘*’ + count + “\r\n” + count个值
其中这个值可以是RDSP五种数据中的任意一种
如:
“*2\r\n$3\r\nfoo\r\n$3\r\nbar\r\n”
“*2\r\n*3\r\n:1\r\n:2\r\n:3\r\n*2\r\n+Foo\r\n-Bar\r\n”

特殊情况:
空值有两种表示方法:”*-1\r\n” “$-1\r\n”
由于Arrays里面的元素可能又是一个Arrays,解析的时候需要注意

6、redis大多数情况下都是 请求-应答模式
当然有两个特殊情况:
发布订阅 ———– 客户端订阅之后,有人发布相应channel消息的时候,服务端直接推给客户端
多命令请求 ———– 对个命令请求,会分多个结果一起回来

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值