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

422 Responses to "SSDB"

  • 关于网络协议那里,python3只能传字节类型的数据过去,如果数据有汉字,服务器会卡主。 Reply
    @hand: 请忽略这条。 Reply
  • 没有quene 的qdel函数,我网站有些功能没法开发,请求作者加上此函数。 Reply
  • quene/list 不支持删除功能,请把这个函数也加上好吗? 比如加一个 qdel(‘q’,3),表示删除q队列的第三个元素。 qdel的别名函数可以是qrem,功能一样。 Reply
  • 请问SSDB适合使用在SSD硬盘上吗?

    据说SSD存在4K对齐, 写入放大等问题, 也就是SSD硬盘的寿命问题.

    请问SSDB适合使用在SSD硬盘上吗?

    SSDB(或leveldb) 会经常的整理磁盘内容吗? 就是会产生比较多的写吗?

    ————————————————–
    我想这样使用SSD硬盘(不知是否可行):

    比如我有两块SSD硬盘, 写的时候顺序写入.

    1 对于磁盘A一周内只写不删(对于需要删除的数据,在其他系统里记录哪条数据是无效的),

    2 每周将磁盘A的数据导入到磁盘B(同时去除掉无效数据)

    这样来避免写入放大.

    这样就需要在写入的时候不要带来写入放大, 不知道SSDB能否实现这一点, 有没有更好的办法来使用SSD硬盘? Reply
    @geyu: SSDB适合用于SSD盘, 用于SSD盘时性能更好, 速度更快.

    一般的应用者不需要太关心硬件的某些特殊表现, 你可以找在存储设备(偏硬件)方面比较专业的地方讨论. Reply
  • 您好,最近在将项目由Redis向SSDB迁移,但是中间遇到了一个问题,一直得不到解决:Redis支持服务器脚本Lua,其较高性能、原子性都是很不错的,但是SSDB并不对此进行支持,我只好将我需要的操作写到客户端的代码中,但是操作的数目很多(大概几万多个zset分批用batch发送),其执行的速度同Redis+lua的方案比较要慢很多。不知道您是否考虑过Redis向SSDB迁移过程中会出现这种情况?有什么比较好的解决办法吗?我对SSDB是刚刚接触,不懂之处还请指教,谢谢 Reply
    @hlwang: SSDB 不计划像 Redis 那样支持 lua 脚本. 可以加入 qq 群讨论. Reply
  • zdel无效的问题,很奇怪。

    golang官方客户端连接SSDB,
    执行ssdb.Do("zdel",zsetname,zkey)
    然后删除不掉….

    SSDB版本是1.8.0 Reply
  • 请问一下我想实现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

« [3][4][5][6][7][8][9][10][11] » 7/18

Leave a Comment