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

427 Responses to "SSDB"

  • 请问一下我想实现incr操作在key为空的情况下,把value设置成要加的那个数,这个能用SSDB的API实现吗?谢谢! Reply
    @maxime: 可以实现. 执行 incr no_exist_key 10 即可. Reply
  • 请问一下SSDB的incr操作,如果key不存在,会返回类型不是整数或越界这个错误。我想要实现Key不存在,直接把Value设置成要加的这个数,请问这个该怎么做呢?谢谢! Reply
  • 请问ssdb能支持redis的brpop/blpop类似的命令吗?即队列的阻塞式访问,直到队列中有内容可用。如果不支持的话,请问是否有计划增加呢?如果支持,该如何使用呢?期待您的回复,谢谢。 Reply
  • ssdb的排序,可不可以使用数值大小呢?

    先数值,再字典序. Reply
    @微博档案: zset 就是. zset 先按 score 排序, 然后按 key(member) 排序. Reply
    @ideawu: 我这边还需要一个kv关系,里面保存数据,我现在是用的hashmap。 Reply
  • 我发现ssdb的data目录增长很快,一天能从90G增长到190G,导致磁盘爆掉!!!
    —。—
    重启之后,就又回到90G了,请问这是什么原因?正常的数据增长每天应该不超过10G

    背景:我用ssdb做了一个在线kv库,每天响应6kw的请求。 Reply
    @grapeisme: 把压缩打开后, 硬盘占用可以降为实际数据的10%~20%. Reply
    @ideawu:
    当前 未 设置打开压缩。如果将压缩打开后,当前库里的数据还能被正常读取,对用户透明么? Reply
    @ideawu:
    当前为设置打开压缩。如果将压缩打开后,当前库里的数据还能被正常读取,对用户透明么? Reply
    @grapeisme: 解释: ssdb存储的数据会有其它的开销, 所以不等于实际的数据大小. 范围是等于实际, 或者实际的2倍, 在这个区间, 如果想进一步了解, 需要学习原理, 一般用户不建议这么做. 解决方案: 把压缩打开, 在ssdb.conf里配置 compression: yes Reply
    @ideawu:
    补充一下,我说的90g和190g这两个数字也是指的data目录大小,并不是实际数据大小 Reply
    @ideawu: 但是重启之后,又从190g重新回到90g正常么?如果是正常开销,感觉应该是重启运行正常之后和重启之前变化不大吧?
    比较怀疑的是是否“存储泄露”之类,临时(无用)文件在增长 Reply
  • 请问SSDB中,使用zset的时候,里面的key长度限制是多少? Reply
  • 使用php的multi_set写入数据的时候,总是出现这种错误
    php返回
    PHP Fatal error: Uncaught exception ‘SSDBException’ with message ‘Connection lost’ in /opt/ssdb-master/api/php/SSDB.php:692
    Stack trace:
    #0 /opt/ssdb-master/api/php/SSDB.php(515): SSDB->recv()
    #1 /opt/ssdb-master/api/php/SSDB.php(155): SSDB->recv_resp(‘multi_set’)
    #2 /opt/ssdb-master/api/php/SSDB.php(192): SSDB->__call(‘multi_set’, Array)
    #3 /opt/php_search/make_index.php(26): SSDB->multi_set(Array)
    #4 {main}
    thrown in /opt/ssdb-master/api/php/SSDB.php on line 692

    ssdb的log返回这个信息。
    2015-03-19 17:23:22.275 [INFO ] ssdb-server.cpp(190): fd: 18 error, delete link
    2015-03-19 17:23:22.317 [INFO ] ssdb-server.cpp(190): fd: 19 error, delete link
    2015-03-19 17:23:22.362 [INFO ] ssdb-server.cpp(190): fd: 21 error, delete link
    2015-03-19 17:23:22.407 [INFO ] ssdb-server.cpp(190): fd: 22 error, delete link
    2015-03-19 17:23:22.452 [INFO ] ssdb-server.cpp(190): fd: 23 error, delete link Reply
    @szpeter: 你是不是一次更新太多了? 请尽量控制在1000条以内, 所有key-value总和大小不超过10M. Reply
  • 博主,你好
    请问,Python API文档在哪里? Reply
  • 请问 SSDB 的全称? Reply
  • 请问如何配置SSDB的密码? Reply

« [4][5][6][7][8][9][10][11][12] » 8/19

Leave a Comment