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

433 Responses to "SSDB"

  • 请问ssdb对冷数据是怎么处理的,是 (丢弃) 还是 (保留key、然后sync到硬盘,再次需要时,重新load)? Reply
  • 你好,我们的项目打算尝试使用 ssdb 替代部分数据访问功能。现在自己编写了一个 ssdb web管理应用,发现:
    1. 无法获得 key、hset、zset 的记录数量。
    2. 数据库的大小暂时无法通过接口查询获得。

    ssdbAdmin 项目地址:https://github.com/jiorry/ssdbAdmin Reply
    @jiorry: good! 可以加入qq群和大家讨论下. Reply
  • @ideawu:我们在windows上用c++开发一个应用,希望能够使用SSDB做为数据库,请问有C++的客户端开发包吗? Reply
    @wgm.china: 请根据上面的链接, 查看相关文档. Reply
    @ideawu: 我看过了,官方提供的C++ API在windows下无法编译。 Reply
  • 今天刚试用ssdb,之前使用另外一款redis+leveldb的NoSQL存储,数据接近100G的时候读写性能严重下降。

    刚刚用SSDB替换上,观察几天看看。

    另外, scan 是不是有bug?
    有key a , a0
    scan a "" 2
    只能出来a0 ,没有>=的效果

    还有,刚刚加入QQ群(sker),请群主通过一下 :D Reply
    @sker: 没看明白你的问题. 你再仔细看下文档, 确认是否有问题, 还是你理解错了. Reply
    @ideawu: 不好意思,后来看文档确实是(start ,end] ,那就没问题 Reply
  • 为什么get的时候会报这样的错?为什么会定位到288741.ldb这个文件?t_kv.cpp(163): get error: IO error: ./var/data/288741.ldb: No such file or directory Reply
  • hello ideawu,
    请问目前的 ssdb 版本还不支持对 hash 的直接删除操作,只能对 hash 的单个 field 进行删除操作是可以的,另外 hash 的过期时间有计划安排什么时候能够支持?

    redis 127.0.0.1:22121> hmset mh f1 "hello"
    OK
    redis 127.0.0.1:22121> hget mh f1
    "hello"
    redis 127.0.0.1:22121> del mh
    (integer) 1
    redis 127.0.0.1:22121> hget mh f1
    "hello"
    redis 127.0.0.1:22121> hdel mh f1
    (integer) 1
    redis 127.0.0.1:22121> hget mh Reply
    @litao941: 可以用 hclear mh 来删除整个 hash, 这一点和 redis 不同. Reply
    @ideawu: 这个应该是你那边 php 封装的,我这边用到的是 lua 语言,是没有这个的,自己再在程序上实现一个 delete 操作感觉有点繁琐 Reply
    @litao941: 可以加qq群 209261868 Reply
    @litao941: 你不需要自己实现, 只要向ssdb-server服务器发送一个 hclear 指令即可. Reply
  • 请教楼主一个问题,使用中发现通过命令 keys "xxx" "yyyy" -1 是可以将 xxx 和 yyyy之间的键值数据过滤出来 但如果不指定区间如何筛选指定关键字的键值呢 Reply
    @zhangchong: 只能根据前缀过滤, 不支持类型 *abc* 这样的过滤. Reply
  • 最近我们在做一些ssdb和redis的测试对比,请问ssdb-bench没有类似于redis-benchmark可以指定测试数据大小的选项吗?还是说ssdb的性能和处理数据长度是无关的,据测试redis-benchmark默认的测试数据长度是2,如果指定为1024 性能数据还是有大下降的。那么ssdb是否存在对应的情况,或者能否告知下ssdb-bench默认的数据长度是多大,谢谢! Reply
  • 怎么没有和leveldb的性能对比,我先在主要用的leveldb,想通过leveldb做一个缓存的功能。ssdb的顺序读与leveldb相比怎么样?随机读的速度与leveldb相比?ssdb底层的存储还是用的leveldb的话,支持的数据结构实际上是在这之上进行的封装是吧? Reply
  • redis del time used 4064289000
    ssdb del time used 4383730000
    redis write-rand time used 21521257000
    ssdb write-rand time used 24333315000
    redis read time used 7864050000
    ssdb read time used 21109499000
    redis rand-read time used 8145284000
    ssdb rand-read time used 8812935000
    redis write-const time used 6037345000
    ssdb write-const time used 7923185000
    redis rand-write-const time used 4707105000
    ssdb rand-write-const time used 7797941000


    db单实例 单java客户端测试(jedis客户端分别连接redis-server和ssdb) 100000条记录 每条记录4k大小 时间单位是纳秒 ssdb缓存大小是1G mac下面进行测试

    写性能ssdb和redis接近 但是读性能ssdb只有redis一半左右,请问是否有其他参数有所影响呢?还是jedis-client实现访问ssdb时效率的问题?

    谢谢! Reply
    @竿子: 确实,我在AIX的PCServer上测试,用的ssdb-bench和redis-benchmark,set性能比redis稍低,但是get性能远远不如redis啊。跟作者介绍的完全不一样,用的都是默认配置,作者能介绍下是否有操作系统配置影响到这个测试数据吗,感谢 Reply

« [10][11][12][13][14][15][16][17][18] » 14/19

Leave a Comment