本文地址: http://www.ttlsa.com/redis/ssdb-redis-alternatives/
除非注明,博客文章均为"运维生存时间"原创,转载请标明本文地址
SSDB是一个快速的用来存储十亿级别列表数据的开源 NoSQL 数据库。
项目地址:https://github.com/ideawu/ssdb
http://ssdb.io/
特性
- 替代 Redis 数据库, Redis 的 100 倍容量
- LevelDB 网络支持, 使用 C/C++ 开发
- Redis API 兼容, 支持 Redis 客户端
- 适合存储集合数据, 如 list, hash, zset…
- 客户端 API 支持的语言包括: C++、PHP、Python、Cpy、Java、NodeJS、Ruby、Go。
- 持久化的队列服务
- 主从复制, 负载均衡
性能
1000请求:
writeseq : 0.546 ms/op 178.7 MB/s
|
writerand : 0.519 ms/op 188.1 MB/s
|
readseq : 0.304 ms/op 321.6 MB/s
|
readrand : 0.310 ms/op 315.0 MB/s
|
并发:
========== set ==========
|
qps: 44251 , time: 0.226 s
|
========== get ==========
|
qps: 55541 , time: 0.180 s
|
========== del ========== |
qps: 46080 , time: 0.217 s
|
========== hset ========== |
qps: 42338 , time: 0.236 s
|
========== hget ========== |
qps: 55601 , time: 0.180 s
|
========== hdel ========== |
qps: 46529 , time: 0.215 s
|
========== zset ========== |
qps: 37381 , time: 0.268 s
|
========== zget ========== |
qps: 41455 , time: 0.241 s
|
========== zdel ========== |
qps: 38792 , time: 0.258 s
|
在MacBook Pro 13 (Retina屏幕)上运行。
与redis的比较:
性能数据使用 ssdb-bench(SSDB) 和 redis-benchmark(Redis) 来获取。
架构
安装
下载压缩包,解压缩
wget --no-check-certificate https://github.com/ideawu/ssdb/archive/master.zip |
编译
安装(可选)
运行
或者以后台的方式运行
./ssdb-server -d ssdb.conf |
ssdb命令行
停止ssdb-server
kill ` cat ./var/ssdb.pid`
|
使用
PHP
include_once( 'SSDB.php' );
|
$ssdb = new SimpleSSDB( '127.0.0.1' , 8888);
|
die(__LINE__ . ' ' . $e->getMessage());
|
$ret = $ssdb-> set ( 'key' , 'value' );
|
Python
使用pyssdb
>>> c. set ( 'key' , 'value' )
|
>>> c.hset( 'hash' , 'item' , 'value' )
|
>>> c.hget( 'hash' , 'item' )
|
>>> c.hget( 'hash' , 'not exist' ) is None
|
Ruby
使用ssdb-rb
ssdb = SSDB . new url: "ssdb://1.2.3.4:8889"
|
ssdb.set( "mykey" , "hello world" )
|
Go
db, err := ssdb.Connect(ip, port);
|
db.Do( "zset" , "z" , "a" , 3);
|
db.Do( "multi_zset" , "z" , "b" , -2, "c" , 5, "d" , 3);
|
resp, err := db.Do( "zrange" , "z" , 0, 10);
|
fmt.Printf( "bad response" );
|
fmt.Printf( "Status: %s\n" , resp[0]);
|
for i:=1; i<len(resp); i+=2{
|
fmt.Printf( " %s : %3s\n" , resp[i], resp[i+1]);
|
使用lua-resty-ssdb
lua_package_path "/path/to/lua-resty-ssdb/lib/?.lua;;" ;
|
local ssdb = require "resty.ssdb"
|
db:set_timeout(1000) -- 1 sec
|
local ok, err = db:connect( "127.0.0.1" , 8888)
|
ngx.say( "failed to connect: " , err)
|
ok, err = db:set( "dog" , "an animal" )
|
ngx.say( "failed to set dog: " , err)
|
ngx.say( "set result: " , ok)
|
local res, err = db:get( "dog" )
|
ngx.say( "failed to get dog: " , err)
|
ngx.say( "dog not found." )
|
local results, err = db:commit_pipeline()
|
ngx.say( "failed to commit the pipelined requests: " , err)
|
for i, res in ipairs(results) do
|
if type(res) == "table" then
|
ngx.say( "failed to run command " , i, ": " , res[2])
|
-- process the table value
|
-- process the scalar value
|
-- put it into the connection pool of size 100,
|
local ok, err = db:set_keepalive(0, 100)
|
ngx.say( "failed to set keepalive: " , err)
|
-- or just close the connection right away:
|
-- local ok, err = db:close()
|
-- ngx.say( "failed to close: " , err)
|
C++
int main( int argc, char **argv){
|
const char *ip = (argc >= 2)? argv[1] : "127.0.0.1" ;
|
int port = (argc >= 3)? atoi (argv[2]) : 8888;
|
ssdb::Client *client = ssdb::Client::connect(ip, port);
|
printf ( "fail to connect to server!\n" );
|
s = client->set( "k" , "hello ssdb!" );
|
printf ( "k = hello ssdb!\n" );
|
<iframe id="aswift_0" style="left: 0px; position: absolute; top: 0px;" name="aswift_0" frameborder="0" marginwidth="0" marginheight="0" scrolling="no" width="728" height="90"></iframe>
分享到:
相关推荐
用户替代redis的工具,数据完全离线存储,再也不担心服务器内存不够用了。
SSDB 是一个 C/C 语言开发的高性能 NoSQL 数据库, 支持 zset(sorted set), map(hash), kv, list 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据. SSDB 在 QIHU 360 被大量使用, 同时也被国内外业界...
互联网分布式缓存技术 课程主讲: 互联网应用高级架构师 白贺翔涉及技术: Redis、SSDB、Memcached课程描述: 介绍互联网分布式技术的重要性、背景、应用范围;目前互联网行业使用分布 式缓存进行设计的比例,...
ssdb-ya-又一个 ssdb 的 Python 客户端. 用来替代 Redis 的 NoSQL 数据库.
SSDB-磁盘上存储的Redis兼容NoSQL数据库 SSDB是高性能键值(key-string,key-zset,key-hashmap)NoSQL数据库,是Redis的替代产品。 SSDB稳定,可立即投入生产,并被包括QIHU 360在内的许多互联网公司广泛使用。特征...
NULL 博文链接:https://jinnianshilongnian.iteye.com/blog/2186316
SSDB 支持 Redis 网络协议, 所以你可以用 Redis 的客户端来连接 SSDB 服务器. 但是, 使用 SSDB 客户端是最高效的方式. 所有的 SSDB 客户端 API 都是支持二进制数据的, 二进制数据即是字符串, 字符串就是二进制数据...
这是一个实现了ssdb和redis同步协议的同步工具,它可以从ssdb或redis同步数据。目前同步redis还有bug,从比较大的redis同步的时候会出现被主库中断连接的情况,所以实际同步不支持redis的列表和ssdb的队列容器。遇到...
迁移 SSDB 到 Redis/Pika 工具集,Ruby 实现
介绍dbproxy是一个采用C 11编写的代理服务器,支持redis和 ssdb数据库。 其主要用于扩容和提高系统负载。使用lua控制sharding,把不同的key-value映射到不同的后端redis或ssdb服务器。构建dbproxy支持windwos和linux...
SSDB 是一个高性能 NoSQL 数据库, 使用 LevelDB 作为存储引擎, 支持 Redis 协议.... SSDB一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis...
ssdb的java驱动,ssdb在性能方面远超redis
redis-admin-web redis, ssdb 管理控制台
ssdb for windows 的服务端,ssdb是一个开源的数据库,性能远超redis.
SSDB是一个开源的高性能数据库服务器, 使用Google LevelDB作为存储引擎, 支持T级别的数据, 同时支持类似Redis中的zset和hash等数据结构, 在同时需求高性能和大数据的条件下, 作为Redis的替代方案.
$ssdb_handle = new SSDB(); $ssdb_handle->connect('127.0.0.1', 8888); $ssdb_handle->set('ssdb_version', '1.8.0'); $ssdb_handle->get('ssdb_version'); 本扩展支持的所有命令如果返回为NULL,代表...
对SSBD的详细解说,SSDB 是一个 C/C++ 语言开发的高性能 NoSQL 数据库,支持 zset(sorted set), map(hash), kv, list 等数据结构,用来替代或者与 Redis 配合存储十亿级别的列表数据。
dotnetssdb SSDB .Net客户端
SSDB 是一个 C++ 语言开发的高性能开源 NoSQL 数据库服务器, 支持 Key-value, Key- hashmap, Key-zset(sorted set) 等数据结构, 十分适合存储数亿条级别的列表, 排序表等集合数据, 是 Redis 的替代和增强方案. ...
SSDBAdmin是SSDB数据库的可视化界面管理工具 功能 提供SSDB数据的hash/zset/kv/queue等数据结构的增删改查等功能