redis[0] 通讯报文协议

原创 2016年05月31日 17:22:35

据说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消息的时候,服务端直接推给客户端
多命令请求 ———– 对个命令请求,会分多个结果一起回来

相关文章推荐

CPU卡中T=0通讯协议的分析与实现

关键词:卡片操作系统(COS) 终端应用层(TAL) 终端传输层(TTL) 应用协议数据单元(APDU) 传输协议数据单元(TPDU) IC卡的应用越来越广泛,从存储卡到逻辑加密卡,目前CPU卡...

CPU卡中T=0通讯协议的分析与实现

摘要:T=0是国际标准中规定的一种接触式CPU卡通讯协议。结合开发实践,将该协议分为四个层次,主要从CPU卡的角度出发,结合终端,从两个方面系统地阐述了该协议的特点和实现过程,并对T=0协议的优缺点进...

CPU卡中T=0通讯协议的分析与实现

摘要:T=0是国际标准中规定的一种接触式CPU卡通讯协议。结合开发实践,将该协议分为四个层次,主要从CPU卡的角度出发,结合终端,从两个方面系统地阐述了该协议的特点和实现过程,并对T=0协议的优缺点进...

syncml报文协议

  • 2013年09月16日 16:08
  • 187KB
  • 下载

ICMP(Internet报文控制协议)

  • 2011年08月14日 21:16
  • 23KB
  • 下载

组态王与stm32通讯笔录-组态王报文分析

上篇文章总结分析了组态王可以与stm32实现通讯,接下来谈一下,组态王怎么能实现对stm32的控制及查询接受数据。 一、上位机组态王 1、建立I/O变量。 首先说一下I/O变量和内存变量的区别及...

HTTP协议报文的格式解析

  • 2017年08月29日 22:25
  • 51KB
  • 下载

8583报文协议打包解包

  • 2017年08月28日 09:26
  • 587KB
  • 下载

Redis 通讯协议规范

Redis 通讯协议规范 redis是一个key-value形式的基于内存的数据库 当安装完程序后我们知道可以用redis-cli连接redis-server进行通讯,进行各种...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:redis[0] 通讯报文协议
举报原因:
原因补充:

(最多只允许输入30个字)