SDB 是一个快速的 NoSQL 数据库, 用来存储十亿级别的列表数据
SSDB 是稳定的, 生产环境使用的, 已经在许多互联网公司如奇虎 360 得到广泛使用
下载和安装
wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip $ unzip master $ cd ssdb-master $ make $ # 将安装在 /usr/local/ssdb 目录下 $ sudo make install # 启动主库 $ ./ssdb-server ssdb.conf # 启动为后台进程 $ ./ssdb-server -d ssdb.conf # 启动从库 $ ./ssdb-server ssdb_slave.conf # 启动 ssdb 命令行 $ ./tools/ssdb-cli -p 8888 # 停止 ssdb-server $ kill `cat ./var/ssdb.pid`
从 Redis 迁移到 SSDB
工具
在 tools 目录中的 redis-import.php PHP 脚本可以用来将 Redis 服务器上的数据, 拷贝到 SSDB 服务器上.
用法:
php redis-import.php redis_host redis_port redis_db ssdb_host ssdb_port
参数:
redis_host: Redis 运行所在的 IP 或者主机名
redis_host: Redis 监听的端口
redis_db: Redis 的 DB 编号
ssdb_host: SSDB 运行所在的 IP 或者主机名
ssdb_host: SSDB 监听的端口
SSDB 支持 Redis 协议和客户端, 所以你可以使用 Redis 的客户端来连接 SSDB 进行操作.
Clients
SSDB 源码仓库中, 内置了许多语言的客户端, 这些便是所谓的官方客户端.包括C++,Cpy,C#,Go,Java,Lua,NodeJS,PHP,Python,Ruby等。
php-client 文档说明见:点此链接
SDB 网络协议定义
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
高性能的 SSDB 协议解析器
#include <stdlib.h>
#include <string.h>
int len = buffer->size();
char *ptr = buffer->data();
while(len > 0){
char *data = (char *)memchr(ptr, '\n', len);
if(data == NULL){
break;
}
data += 1;
int num = data - ptr;
if(num == 1 || (num == 2 && ptr[0] == '\r')){
// Packet received.
return OK;
}
// Size received
int size = (int)strtol(ptr, NULL, 10);
len -= num + size;
ptr += num + size;
if(len >= 1 && ptr[0] = '\n'){
len -= 1;
ptr += 1;
}else if(len >= 2 && ptr[0] == '\r' && ptr[1] == '\n'){
len -= 2;
ptr += 2;
}else{
break;
}
// Data received
}
a dressy belt
gay porn You are getting a horse
gay pornA Nike Jordan is one of the best basketball shoes ever made
