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 架构
启动报错
Connection error: (111, ‘Connection refused’)
Traceback (most recent call last):
File "./deps/cpy/cpy.py", line 65, in ?
execfile(dstfile)
File "/usr/local/ssdb/_cpy_/ssdb-cli.py", line 427, in ?
sys.exit(0) Reply
我使用的是ssdb c++集成
1,重连问题:这里ssdb中的client的例子都是调用一个client来创建连接,这个连接是一个socket长连接。
但这里没有重连机制,如果我的服务集成client后,去连接ssdb服务,断开了,没有通知我重连;且没有心跳处理。我们目前集成的处理,会自己发送ping给ssdb,通过判断是否发送成功来判断连接是否断开。
2,分片问题;如果我部署了多个ssdb主从,我根据连接数指定进行hash分片,由于断开后不能自动重连,这里分片数据会错乱。
两个问题都是重连相关的,这里需要自己去实现吗? Reply
2. 根据 key 来哈希。 Reply
Traceback (most recent call last):
File "./deps/cpy/cpy.py", line 69, in <module>
execfile(dstfile)
File "/usr/local/ssdb/_cpy_/ssdb-cli.py", line 522, in <module>
sys.stdout.write((repr_data(resp.data) + ‘\n’))
TypeError: unsupported operand type(s) for +: ‘int’ and ‘str’ Reply