SSDB

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 vs Redis

SSDB 架构

Views: 117596

427 Responses to "SSDB"

  • 楼主,我看到之前的消息说对windows支持不是很好,有没有计划改善windows环境下的性能呢? Reply
  • 你好,如何快速删除整个hash? Reply
  • 最近阅读ssdb代码的时候,发现一个疑问,Slave::proc()处理过程中并没有判断proc_copy()、proc_sync()的结果,如果处理过程中某条同步记录,例如seq为10000,写失败了,而下一条记录1001写成功,并且更新了last_seq,是否有丢失第10000条数据的风险呢? Reply
  • 这里是否可以像 mysql一样做个 可配置的同步时间。
    3秒钟同步有点长了。
    int BackendSync::Client::sync(BinlogQueue *logs){
    同步有两个规则 1. 操作大于1000条; 2. 等待 3秒钟
    if(type == BinlogType::MIRROR && this->is_mirror){
    if(this->last_seq – this->last_noop_seq >= 1000){
    this->noop();
    return 1;
    }else{
    continue;
    }
    }

    if(is_empty){
    if(idle >= NOOP_IDLES){ // TICK_INTERVAL_MS = 300 NOOP_IDLES = 10
    idle = 0;
    client.noop();
    }else{
    idle ++;
    usleep(TICK_INTERVAL_MS * 1000);
    }
    }else{
    idle = 0;
    }

    } Reply
  • zset 如何保证是排序的?比如在level0有一个zset的数据,在level4 上也有这个zset的数据,在合并之前,分布着不同level上的zset的数据之间并不是有序的。 Reply
  • 博主,这么好的东西,为啥不想办法弄到PHP的扩展里面呢?如果英语不好的话,可以找下鸟哥(PHP7的主要架构者)。好东西,要全世界推广呀。也让老外知道中国还有一个相当牛B的SSDB。 Reply
    @PHP试题网: 谢谢你的支持. SSDB 现在在国外也很流行, 也有很多团队和产品在使用. SSDB 是一个单独的服务, 不适合作为一个 PHP 扩展. 希望大家一起, 多写博客, 多分享使用经验, 用自己的方式一起来推广 SSDB! Reply
  • 最大Value长度31MB,这个改源代码能改大吗?是的话,麻烦告诉下哪个文件,谢谢! Reply
  • 为什么我测试的结果,set比redis慢很多呢?已经关闭了log
    redis
    -bash-3.2$ ./redis-benchmark -p 6379 -t set,get -q
    SET: 18796.99 requests per second
    GET: 18939.39 requests per second

    ssdb
    -bash-3.2$ ./redis-benchmark -p 8888 -t set,get -q
    SET: 9718.17 requests per second
    GET: 17825.31 requests per second Reply
  • 您好,想再咨询个问题,由于hgetall读取大数据量的时候,无法读出,这样导致很多业务无法开展,因为key的值是无法知道的.还有对于map类型,淘汰机制也不好去做.请您解答下,谢谢 Reply
    @xiezhaohui: 用 hscan 读取一个范围的 key 呀 Reply
    @xiezhaohui: map/hash 的淘汰, 目前没有优雅的方法, 需要你自己在应用层去实现. Reply
    @xiezhaohui: 计算机领域是不推荐一次把全部数据传输完再操作的. 数据也是一样, 也推荐一次把所有数据全部读取再处理, 而应该采用分段处理的方式. 你可以用 hscan 来遍历数据, 一次只处理 100 条: http://ssdb.io/docs/zh_cn/php/content.html#m-hscan Reply
  • hgetall数据量大,完全读不出来.不能返回一个句柄来遍历啊? Reply

« [1][2][3][4][5][6][7][8][9] » 5/19

Leave a Comment