今天在整理以前开发相关时的一些资料,其中对于redis protocol的解析有些小记录,记录在此:
一.reidis client-server协议是有如下特点
1.实现简单
2.能够被计算机快速解析。
3.使用者也容易理解二.通信
client与redis server建立TCP连接,每个命令与数据传送最后都以\r\n结尾。
Redis跟据不同的命令进行不同的回复。redis server回复的内容类型通过第一个参数可以判断:
1."+"号开头表示单行字符串的回复 如:+OK
2."-"号开头表示错误的信息回复。 如:-wrong date type
3.":"号开头表示一个整数回复。 如":0\r\n"
4."$"号开头表示一个批量的回复。 如GET mykey 返回$6\r\nfoobar\r\n 其中6为字节数,foobar为实现的字符串数据。
5."*"号开头表示多个批量回复。
批量回复
对于$得到单个批量的回复,如果请求不存在数据块,返回$-1,这种情况对于客户端API返回的是null对象还不是空串.
多个批量回复
例如:
C: LRANGE mylist 0 3
s: *4
s: $3
s: foo
s: $3
s: bar
s: $5
s: Hello
s: $5
s: World
参上返回四个参数:
*4\r