发布于 2014-10-14 09:24:37 | 949 次阅读 | 评论: 0 | 来源: 网友投递
SSDB NoSQL 数据库
SSDB是一个开源的高性能数据库服务器, 使用Google LevelDB作为存储引擎, 支持T级别的数据, 同时支持类似Redis中的zset和hash等数据结构, 在同时需求高性能和大数据的条件下, 作为Redis的替代方案.
本文为大家介绍的是ssdb的php api的用法和示例代码,感兴趣的同学参考学习下。
SSDB是一个开源的高性能数据库服务器, 使用Google LevelDB作为存储引擎, 支持T级别的数据, 同时支持类似Redis中的zset和hash等数据结构, 在同时需求高性能和大数据的条件下, 作为Redis的替代方案.
一、介绍
SSDB的PHP API方便的提供了php的开发接口。git地址 https://github.com/ideawu/ssdb.git ,SSDB官方文档地址 http://ssdb.io/zh_cn/
二、SSDB类结构图
PHP 接口源码文件在 /api/php/SSDB.php
三、SSDB网络协议
报文
Packet := Block+ '\n' Block := Size '\n' Data '\n' Size := literal_integer Data := size_bytes_of_data
请求
Request := Cmd Blocks* Cmd := Block
请求命令包括: get, set, del, ...
响应
Response := Status Block* Status := Block
响应状态码包括: ok, not_found, error, fail, client_error
示例
用 telnet 或者 nc 命令连接到 SSDB 服务器, 然后输入下面的代码(用最后一行空行结束):
3 get 3 key
你将看到类似这样的响应:
2 ok 3 val
在api中的send处理中,对于cmd和argus按照网络协议的格式发送给服务器。相关代码如下
private function send($data){ $ps = array(); foreach($data as $p){ $ps[] = strlen($p); $ps[] = $p; } $s = join("\n", $ps) . "\n\n"; if($this->debug){ echo '> ' . str_replace(array("\r", "\n"), array('\r', '\n'), $s) . "\n"; } try{ while(true){ $ret = @fwrite($this->sock, $s); if($ret == false){ $this->close(); throw new SSDBException('Connection lost'); } $s = substr($s, $ret); if(strlen($s) == 0){ break; } @fflush($this->sock); } }catch(Exception $e){ $this->close(); throw new SSDBException($e->getMessage()); } return $ret; }