Redis源码学习之【命令协议格式】
2013-03-18 14:09
330 查看
介绍
本来这篇要介绍Redis的命令解析的,但是要想对Redis的命令解析有更直观的了解,必须先了解Redis的命令协议格式。源码
暂无(或者是是在network.c中吧)分析
Requests
*<number of arguments> CR LF$<number of bytes of argument 1> CR LF
<argument data> CR LF
...
$<number of bytes of argument N> CR LF
<argument data> CR LF
Redis最新支持的二进制安全的请求通用格式如上所示。具体的实例有:
*3
$3
SET
$5
mykey
$7
myvalue
转换为实际的每个字节的形式字符串为:"*3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n"。同时这种格式的协议也用于Redis服务器对客户端的回复中,称为Bulk reply。
这种统一请求协议在Redis也被用于向clients发送一些列的列表项,被称作为Multi Bulk Reply。它是由N的不同的Bulk Reply 加上一个 *<argc>\r\n 前缀,其中argc是Bulk Reply的个数。
Replies
Redis会向cient回复不同类型replies。根据第一字节可以决定reply回复的不同的种类:Status Reply,第一字节为"+"
Error Reply,第一字节为"-"
Integer Reply,第一字节为":"
Bulk Reply,第一字节为"$"
Multi Bulk Reply,第一字节为"*"
Status Reply
+ <status strings> \r\n
Error Reply
- <error type> < error info> \r\n
Integer Reply
: <integer value strings> \r\n
Bulk Reply
$<number of bytes of the args>\r\n<args strings>\r\n
Multi Bulk Reply
*<number of bulk replies>\r\n<bulk reply list>\r\n
说明
在Multi-Bulk replies中如果单独的元素的长度为-1则表明该元素丢失或者是Null。Multiple commands and pipelining
一个客户端可以使用同一个连接发送多个命令。利用管道技术可以使用一个单独的写操作将client的多个命令发送出去而不需要在发送完一个命令后等待服务器的回复。这些请求的回复可以在最后进行统一读取。Inline Commands
Redis还支持早起的协议格式,就是在命令行中的形式如下:C: PING S: +PONG
C: EXISTS somekey S: :0
相关文章推荐
- 用lua生成modbus协议中的ascii模式的1363格式(适合爱默生公司的ups或者空调之类的协议命令)
- redis 统一通讯协议 返回结果格式 请求命令格式
- Redis源码学习之【命令协议格式】
- 网络协议分析工具Wireshark的使用、用Wireshark观察ARP协议以及ping命令的工作过程分析以太网报文格式
- RSS协议中,时间字段格式要求
- 按照如下格式的命令设置Linux Solaris Unix系统日期和时间。
- 命令格式和常见权限
- TCP/IP协议、报文格式、三次握手协议
- Ubuntu对各种格式的压缩文件进行压缩与解压命令
- linux命令语法格式
- Linux命令之dos2unix - DOS格式文本文件UNIX格式文件的转换
- Linux中命令格式详解
- mysql 协议的statistics命令包及解析
- 运维之基础网络篇-----4. 包格式及IP地址 、 网络层协议及路由器
- 基于cmpp协议的超长短信格式
- Google SiteMap的协议格式详解
- Linux常见文件格式打包解压命令
- Linux crontab定时执行任务 命令格式与详细例子
- vim 命令整理(从FreePlane的mm格式导出)
- HTTP协议格式详解