首页->正文

Redis协议说明与解析--php篇

2011-05-23 -Web开发 标签: 协议

首先推荐您看官方文档RTFM:http://redis.io/topics/protocol,如果你不想点或者讨厌英文的话就看以下的中文介绍吧:)

1 请求协议的格式如下
*<参数个数>\r\n
$<参数1的字节长度>\r\n
<数据>
...
$<参数N的字节长度>\r\n
<数据>\r\n

例如set mykey myvalue对应的格式为:
*3\r\n$3\r\nSET\r\n$5\r\nmykey\r\n$7\r\nmyvalue\r\n

其中
*3为参数个数
$3是SET的长度
$5是mykey的长度
$7是myvalue的长度

2 响应格式
这个有点复杂,要看返回数据的第一个字符:
“+”只返回一行数据
“-”发生了错误的提示信息
“:”返回整形数值
“$”返回一组数据(也可以理解为一团,一批数据……)
“*”返回多组数据


根据这个协议规定可以设计一个简易的用php操作Redis命令的类,以和Redis进行通讯。
具体代码看这里(只提供了基础的set,mget,get,sadd,lpush,lrang,smembers,incr,scard,expire等命令,更多的可以参考官方文档http://redis.io/commands自行添加)
另外,在解析返回结果时,如果不清楚返回的数据可以通过telnet到redis进行查看,如
$ telnet 127.0.0.1 6379
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
lpush mylist abc
:1
lpush mylist def
:2
lrange mylist 0 -1
*2
$3
def
$3
abc


还有一些其他语言操作Redis的库(当然有php的了),这里有详细介绍,甚至有以php扩展方式安装的phpredis(我在php-5.3下测试编译成功了,但redis.so总加载不上……而那两个php类写的那叫一个复杂,所以熟悉下协议,练练手)

PHP的相关扩展
http://redis.io/clients#PHP
https://github.com/nrk/predis
https://github.com/owlient/phpredis

*2012-04-30补充:phpredis已经可以成功编译,推荐使用

下一篇 推荐几本书-第一期

上一篇 编写web服务器学Python之三

相关文章

php增加Last-Modified为何无效

Fastcgi协议定义解释与说明

UTF8头信息BOM导致的json输出问题

文章分类

开发小提示

  • 1:Mongodb中通过db.yourCollectionName. dataSize()查看某个文档的大小
  • 2:linux下用reset命令恢复查看二进制文件导致的命令行乱码
  • 3:查看MySQL表的索引情况show index from tableName
  • 更多...

交流

  • wangnow(a)126.com