SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库, 支持 zset(sorted set), map(hash), kv, list 等数据结构, 用来替代或者与 Redis 配合存储十亿级别的列表数据. SSDB 同时也被国内外业界的众多互联网企业所使用, 如 QIHU 360, TOPGAME, 汽车之家, 比亚迪等.
项目主页: https://github.com/ideawu/ssdb
SSDB 文档: http://ssdb.io/docs/zh_cn/
谁在用 SSDB: http://ssdb.io/docs/zh_cn/users.html
官方QQ群: 170983373
2014开源中国开源世界高峰论坛, 中国开源优秀项目奖项目
SSDB 的主要特点:
- 支持 zset, map/hash, list, kv 数据结构, 可替代 Redis
- 特别适合存储大量集合数据, 支持丰富的数据结构: key-value, key-map, key-zset, key-list.
- 使用 Google LevelDB 作为存储引擎
- 支持主从同步, 多主同步
- 客户端支持 PHP, C++, Python, Lua, Java, Ruby, nodejs, Go 等
- 内存占用极少
- 图形化界面管理工具(phpssdbadmin)
PHP API
<?php require_once('SSDB.php'); $ssdb = new SimpleSSDB('127.0.0.1', 8888); $resp = $ssdb->set('key', '123'); $resp = $ssdb->get('key'); echo $resp; // output: 123
PHP API 文档: http://ssdb.io/docs/zh_cn/php/
SSDB vs Redis
SSDB 架构
1、不断批量插入数据,将近2000万条数据时,会出现长时间停顿;
1.62版本也会有停顿,但时间很小;
2、个人感觉,1.62版本相对稳定,除了上面说的稍微停顿之外,没发现其它问题,测试了1.64和1.67,不断批量插入数据,还会出现连接断开情况,使用的是ssdb.py客户端,报错信息为:disconnected Connection closed None。 Reply
谢谢! Reply
2014-01-12 11:10:19.665 [DEBUG] serv.cpp(258): w:0.040,p:0.034, req: multi_set, resp: client_error
2014-01-12 11:10:19.671 [INFO ] ssdb-server.cpp(165): fd: 16, read: 0, delete link
2014-01-12 11:10:19.741 [INFO ] ssdb-server.cpp(137): new link from 10.96.18.158:58090, fd: 16, link_count: 1
2014-01-12 11:10:19.839 [DEBUG] serv.cpp(258): w:0.217,p:0.024, req: multi_set, resp: client_error
2014-01-12 11:10:19.845 [INFO ] ssdb-server.cpp(165): fd: 16, read: 0, delete link
2014-01-12 11:10:19.917 [INFO ] ssdb-server.cpp(137): new link from 10.96.18.158:58094, fd: 16, link_count: 1
2014-01-12 11:10:20.021 [DEBUG] serv.cpp(258): w:0.036,p:0.011, req: multi_set, resp: client_error
2014-01-12 11:10:20.027 [INFO ] ssdb-server.cpp(165): fd: 16, read: 0, delete link
2014-01-12 11:10:20.099 [INFO ] ssdb-server.cpp(137): new link from 10.96.18.158:58098, fd: 16, link_count: 1
2014-01-12 11:10:20.217 [DEBUG] serv.cpp(258): w:0.033,p:0.010, req: multi_set, resp: client_error
2014-01-12 11:10:20.225 [INFO ] ssdb-server.cpp(165): fd: 16, read: 0, delete link
2014-01-12 11:10:20.302 [INFO ] ssdb-server.cpp(137): new link from 10.96.18.158:58102, fd: 16, link_count: 1
2
2014-01-12 11:42:01.326 [DEBUG] serv.cpp(258): w:0.039,p:62.062, req: multi_set [43] [244] [43] [244] [19996 more...], resp: ok 10000
2014-01-12 11:42:01.329 [DEBUG] serv.cpp(258): w:0.029,p:80.277, req: multi_set [43] [312] [43] [312] [19996 more...], resp: ok 10000
2014-01-12 11:42:01.604 [DEBUG] serv.cpp(258): w:0.210,p:64.492, req: multi_set [43] [264] [43] [264] [19996 more...], resp: ok 10000
2014-01-12 11:42:01.604 [INFO ] ssdb-server.cpp(157): fd: 16 error, delete link
2014-01-12 11:42:01.643 [DEBUG] serv.cpp(258): w:0.029,p:89.458, req: multi_set [43] [312] [43] [312] [19996 more...], resp: ok 10000
2014-01-12 11:42:01.953 [DEBUG] serv.cpp(258): w:0.024,p:84.914, req: multi_set [43] [223] [43] [221] [19996 more...], resp: ok 10000
2014 Reply
如failover,是否可以保证数据不丢失? Reply
如failover,是否可以保证数据不丢失? Reply
$start=gettickcount();
$zname = ‘btest';
for($i=0; $i<1000; $i++){
$ssdb->batch();
for($j=0; $j<100; $j++){
$key = "k$i$j";
$score = mt_rand(0, 100);
$ssdb->zset($zname, $key, $score);
}
$ssdb->exec();
}
$size = $ssdb->zsize($zname);
echo "total $size items\n";
$end=gettickcount();
printf("cost %d\n", $end -$start); Reply
操作系统:centOS6.4
gcc++版本4.4.7
安装时出现:g++: /home/winds/下载/ssdb-master/deps/snappy-1.1.0/.libs/libsnappy.a:没有那个文件或目录
这个问题如何处理? Reply
cd deps/snappy-1.1.0; ./configure; make
然后再回到 ssdb-master make. Reply
感谢你的回复,成功安装成功了! Reply