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: 157850

433 Responses to "SSDB"

  • 请问备份为什么会出现奇怪的东西?

    ssdb 127.0.0.1:8888> export backup.ssdb
    5%
    10%
    15%
    20%
    25%
    30%
    35%
    40%
    45%
    50%
    55%
    60%
    65%
    70%
    75%
    80%
    85%
    90%
    95%
    100%
    105%
    110%
    115%
    120%
    125% Reply
  • 发现修复应用数据时总会影响线上业务(超时5s), ssdb 目前使用版本1.9.0 , 以下是修复部分数据之后减去修复之前的统计数据:
    操作类型 调用次数之差 等待时间之差(ms) 处理时间之差(ms)
    multi_zset 279533 12854 15719
    zclear 6008 6333 67308
    hclear 1818 2977 9180
    zrange 40971 1103 11537
    multi_hset 672 16 1597
    hgetall 17898 508 5950
    multi_hdel 24 505 2
    hset 261785 5486 9088

    io性能:
    avg-cpu: %user %nice %system %iowait %steal %idle
    17.46 0.00 1.05 7.38 0.00 74.11

    Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util
    xvda 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
    xvdb 0.00 2139.20 3.80 203.00 59.20 8360.80 81.43 43.48 206.01 1.74 35.88

    楼主大侠能帮忙定位一下问题吗?是硬盘的性能比较低,还是其他原因呢。 Reply
    @issac: 你好, 修数据建议在空闲时段, 如深夜. 另外, 换成高性能SSD盘会对ssdb的性能提高有很大帮助. Reply
  • 您好问下,hset何时支持过期时间呢? Reply
  • mac 执行make命令编译时报错,这是什么原因?
    ERROR! autoconf required! install autoconf first

    Makefile:4: build_config.mk: No such file or directory
    make: *** No rule to make target `build_config.mk’. Stop. Reply
    @liukai: 需要安装 autoconf Reply
  • 我把ssdb.config文件中的ip已经设置成了 0.0.0.0, 但是在其它机器却访问还是提示 Connection refused, 这是应为还要配置其他地方吗? 版本是1.9.3 Reply
  • HI,有没有看过这篇文章:http://www.wzxue.com/ssdb/ 对于作者提及的SSDB存在的问题,现在的版本是否确认了然后解决了。 Reply
  • root 37513 1 4 16:10 ? 00:05:42 ./ssdb-server -d ssdb.conf
    root 38545 38489 0 16:53 pts/2 00:00:00 /bin/sh ./ssdb-cli
    root 38550 38545 0 16:53 pts/2 00:00:00 /bin/sh ./../deps/cpy/cpy ./ssdb-cli.cpy
    root 38552 38550 0 16:53 pts/2 00:00:00 python ./../deps/cpy/cpy.py ./ssdb-cli.cpy
    root 40953 39614 0 18:27 pts/4 00:00:00 grep –color=auto ssdb


    运行一段时间之后,多出两个进程,38545/38550不知道这两个线程作什么用? Reply
    @ibackkom: 正如显示的那样, 它们是ssdb-cli相关的进程, 中要你退出ssdb-cli它们就会消失. Reply
    @ideawu: 多谢,确实是cli退出后就消失了 Reply
  • SSDB很好很强大,只是我的数据库非常多,数据量非常大,想把mysql数据都迁移到ssdb,请问单机可以配置多个数据库实例吗?如果可以,如何配置呢?另最多支持多少个实例?每个实例是不是都可以做主从同步?谢谢博主。 Reply
    @笑红尘: 你的这些问题的答案都是肯定的, 相关文档为 http://ssdb.io/docs/zh_cn/faq.html 打开后用浏览器搜索"如何在一台机器上" Reply
    @ideawu: 非常感谢您。 Reply
  • 楼主好!用scan命令时,如何指定比较函数,比如传入scan("2016041210Bxxxx5824","2016041210Bxxxx5924"), 我希望key字段中特定位置(xxxx)的字符不参与key值比较,有什么好办法么?

    谢谢! Reply
    @beng_jun: ssdb无法实现, 只能使用者自己来实现. Reply
  • 请问,我用的c#客户端,ssdb支持KV,那么V里面存放List泛型可以吗 Reply
    @benegates: 你需要将要存储的东西序列化成 byte[] 然后存储, 读取后再反序列化. 关于"序列化反序列化" 这是语言相关的知识, 你需要自己去学习. Reply
    @ideawu:KV 只能存储bytes[] ,是这样吗 Reply

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

Leave a Comment