版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、网络层客户端通过创建到 6379 端口的 TCP 连接来连接到一个 Redis 服务器。每个 Redis 命令或者客户端和服务器之间传输的数据都以rn (CRLF)结束。请求Redis 可以接受由不同参数组成 令。只要接收到一个命令,这个命令就会被执行,然后一个答复会被返回给客户端。新的请求协议新的 协议是在Redis1.2 中引入的,但是在Redis2.0 中成为了与 Redis 服务器交互的标准方式。在 协议中所有发送到Redis 服务器的参数都是二进制安全的。这是总体格式:* CR LF$ CR LF CR LF容易实现机器要快容易理解由JeremyWei 同学进行翻译并给大家。原译文:
2、Redis 协议是从以下几个方面做的一个折中方案:本文内容来源于 Redis 的文档,对 Redis 自己的应用层协议进行了详细深入的讲解,如果是单行回复,那么第一个字节是+如果是 multi-bulk 回复,那么第一个字节是*如果是 bulk 回复,那么第一个字节是$如果回复的内容是一个整型数字,那么第一个字节是:如果回复的内容是错误信息,那么第一个字节是 _ .$ CR LF CR LF看下这个例子:*3$3SET$5 mykey$7 myvalue这是以上命令以带引号的字符串展现的样子,这样就可以看到这个请求中每个字节的准确内容:*3rn$3rnSETrn$5rnmykeyrn$7rnm
3、yvaluern就像你一会将会看到的,这个格式还会被用在Redis 回复中。这个被用于每个参数中的格式$6rnmydatarn 叫做Bulk 回复。Redis 实际上使用的请求协议会返回内容列表,叫做 Multi-bulk 回复。它是由 N 个不同的Bulk 回复合在一起,并且有一个字符串前缀*rn 其中是后面参数(Bulk 回复)的数量。4.回复Redis 会以不同类型的回复对命令进行响应。可以通过服务器发送的第一个字节来判定回复的类型:状态回复一个状态回复(或者:单行回复)的格式是以 开头,以BXBT结束的单行字符串。举个例子:+OK客户端库要返回 后面的所有内容,这个例子里边是字符串51
4、。错误回复错误的发送方式和状态回复很像。唯一的不同是第一个字节用 替代了 。 错误回复只有当一些奇怪的事情发生时才会被发送,例如如果你想要用错误的数据类型执行一个操作,或者这个命令不存在等等。所以客户端库应该在接收到一个错误回复的时候抛出一个异常。整形回复这个类型的回复就是一整数以 )82, 结束的字符串,并且用一个字节的字符 作为前缀。例如 BXBT,或者 BXBT 都是整形回复。 像 /4)8 或者 29:9+命令使用整型回复来返回一个没有特别含义的整型数字。对于 /4)8 来说返回的是增加后的数字,对于 29:9 时间等等。 像 +/9:9 这样令会返回 表示 ZXK,返回 表示 LGR
5、YK。 其令像 9*,98+3 和 9+:4 在操作实际完成的时候会返回 ,否则返回 。以下命令将会返回整型回复:9+:4 *+2 +/9:9 /4)8 /4)8(? *+)8 *+)8(? *(9/+ 29:9 35+ 22+4 9* 98+3 9/93+3(+8 9)8*(RQ 回复(RQ 回复被服务器用来返回一个二进制安全的字符串。C: GET mykeyS: $6rnfoobarrn服务器以这种方式来发送数据:第一行是一个字节的内容 ,之后跟着具体内容的字节数,接下来是 )82,,然后具体数据内容被发送,接下来是额外的两个字节的 )82,。服务器实际发送的序列是:$6rnfoobarr
6、n如果请求的内容不存在,那么 HRQ 回复将会使用特殊值 作为数据长度,例如:C: GET nonexistingkeyS: $-1当请求对象不存在,客户端库6/ 不要返回一个空字符串,应该是一个 TOR 对象。举个例子一个 8H_ 库应该返回TOR,一个 ) 库应该返回 4;22(或者在回复对象中设置一个特殊标记),等等。3RZO HRQ 回复像 284-+ 这类令需要返回多个值(列表中的每个元素是一个值,284-+ 需要返回多个元素)。这通过 SRZOVRQ XOZK 来实现,其第一行指明后面有多少个 HRQXOZK。一个 SRZO HRQ 回复的第一个字节一直是 。例如:C:s:s:s:
7、s:s:s:s:s:s:LRANGE mylist 0 3*4$3 foo$3 bar$5o$5World就像你看到的,multi bulk 回复和使用协议发送命令到 Redis 服务器使用的是同样的格式。 服务器发送的第一行是*4rn,用来下面将会有四个 bulk 回复。然后每个 bulkwrite 将会被传送。 如果指定的 key 不存在,那么这个 key 被认为拥有一个空列表,然后0 会做为 multi bulk 的数量被发送。例如:C: LRANGE nokey 0 1S: *0当 BLPOP 命令超时,它将返回值为 nil 的 multi bulk 回复。这个类型的 multi bu
8、lk 的数量为-1 并且应该被解释为 nil 值。例如:C: BLPOP key 1S: *-1当这个发生的时候,一个客户端库API 应该返回一个 nil 对象而不是一个空列表。区分一个空的列表和一个错误条件(比如 BLPOP 命令的超时条件)是必要的。10. Multi-Bulk 回复中的Nil 元素一个 multi bulk回复的单个元素可能会存在-1 的长度,用来指明这个元素不存在并且不是空字符串。这个可能发生在启用了 GET 模式选项的SORT 命令,并且指定的 key 不存在。包含一个空元素的 multi bulk 回复的例子:S:S:S:S:S:S:*3$3 foo$-1$3 ba
9、r第二个元素是 nil。客户端库需要返回如下内容:foo,nil,bar11. 多个命令和管道 /TROTK 命令向 8KJOY 发送命令最简单的方法是使用 OTROTK 命令。以下是一个服务器 客户端之间使用OTROTK 命令进行交互的例子(服务器以 9 作为开始,客户端以 ) 作为开始)C:S: +PONG以下是另一个例子,一个返回整数的OTROTK 命令:C: EXISTS somekey S: :0可能的。(RQ 命令 HRQ 命令和 OTROTK 命令几乎是一样的,但是最后一个参数为了能够接受二进制安全的内容,所以需要以特殊的方式进行处理。OTROTK 命令 命令很简单,就是用空格把
10、参数分隔开来的字符串。二进制安全是不一个客户端可以使用相同的连接来发送多个命令。8KJOY 是支持管道的,所以客户端可以通过一次写操作发送多个命令,不需要服务器的回复才能发 送下一个命令。所有的回复可以在最后。 通常情况下 8KJOY 服务器和客户端之间会有非常快的连接,所以客户端支持这个特性不是那么重要,但如果一个应用需要在很短的时间里发送大量令那么使用管道将会非常快。 发送命令的旧协议在请求协议之前,8KJOY 使用一个不同的协议来发送命令,这个协议仍然被支持因为通过TKZ 它很容易手写。在这个协议中存在两种命令:Redis 的详细介绍:请点这里Redis 的地址:请点这里由于someke
11、y不存在,所以服务器返回:0。 注意 EXISTS 命令只带有一个参数。多个参数以空格进行分隔。Bulk 命令当一些命令以 inline 命令发送的时候为了使最后一个参数支持二进制安全,需要以一个特殊的格式发送。这些命令将会把最后一个参数作为字节计数器,然后大量的数据会被发送(这些数据可以为二进制安全,因为服务器知道有多少字节需要 )。 看下面这个例子:C: SET mykey 6 C: foobarS: +OK这个命令的最后一个参数是6。这个指明了后面数据,字符串foobar的字节数。注意即使这些数据被额外的二个字节大小的 CRLF 所截断。 所有 bulk 命令的准确格式是:把最后一个参数替换成后面数据的字节数,接下来是数据本身和 CRLF。为了能够让程序员更加清晰的理解,这是上面例子中客
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年抚州职业技术学院高职单招职业适应性测试备考题库带答案解析
- 2026年北京社会管理职业学院高职单招职业适应性测试备考试题带答案解析
- 2026年黑龙江生态工程职业学院高职单招职业适应性测试参考题库带答案解析
- 土地合作开发协议2025年争议解决路径
- 2026年鄂尔多斯生态环境职业学院单招综合素质考试备考试题带答案解析
- 2026年广西机电职业技术学院高职单招职业适应性测试备考试题带答案解析
- 2026年德宏师范高等专科学校高职单招职业适应性测试模拟试题带答案解析
- 2026年郑州商学院单招综合素质笔试参考题库附答案详解
- 2026年广东金融学院高职单招职业适应性测试备考题库带答案解析
- 数字货币钱包服务合同2025年
- 消防划线施工方案
- 《大容积铝合金内胆碳纤维全缠绕复合气瓶》
- 医院保洁开荒合同(标准版)
- 垃圾分类督导日常巡查方案
- 2025国开本科《公共部门人力资源管理》期末历年真题(含答案)
- 伤口造口小组年度工作总结
- 《涉外法治概论》课件 杜涛 第7-10章 对外贸易与经济制裁法律制度-涉外应急管理法律制度
- 烧烫伤冻伤救护知识培训
- 2025年护理osce层级考核试题(含答案)
- 放射DR胸片课件
- 管道检修与维护课件
评论
0/150
提交评论