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 架构
setx hh 1 10
10秒之后…
setx hh 1 10
get hh
not_found Reply
调用代码如下:
std::vector<std::string> * resp = const_cast<std::vector<std::string> *>(client->request("hscan",…,"-1"))
当调用 resp->size() 会有内存访问违规 Reply
冯,诺依曼的 理论告诉我们,如果你不用内存,你就必须用外存。 Reply
说实话,如果只是和 redis 一样,存储点数据,不动态条件查询,那我还不如用 redis。 Reply
使用过程中发现了体积巨大的 日志文件,内容几乎都是一样的:
ssdb-server.cpp(85): accept failed! Too many open files
请问这是什么原因造成的,应该如何避免呢? Reply