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