本文地址: 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>
分享到:
相关推荐
SSDB-Redis是一款高效、可替代Redis的数据存储系统,它主要设计用于解决Redis在面对大数据量时可能遇到的内存不足问题。SSDB的核心优势在于其数据完全离线存储,这意味着它可以将数据保存到硬盘上,而不仅仅依赖于...
SSDB 是一个 C/C 语言开发的高性能 NoSQL 数据库, 支持 zset(sorted set), map(hash), kv, list 等数据结构, 用来替代或者与 Redis 配合存储十亿级别列表的数据. SSDB 在 QIHU 360 被大量使用, 同时也被国内外业界...
Python SSDBYA是针对SSDB数据库的Python接口,它旨在作为Redis的NoSQL数据库替代品。SSDB(Simple Scalable Database)是一款高性能、可扩展的键值存储系统,适用于大量数据的场景。Python SSDBYA客户端为Python...
互联网分布式缓存技术 课程主讲: 互联网应用高级架构师 白贺翔涉及技术: Redis、SSDB、Memcached课程描述: 介绍互联网分布式技术的重要性、背景、应用范围;目前互联网行业使用分布 式缓存进行设计的比例,...
Redis和SSDB是两种常用的键值存储系统,广泛应用于数据缓存、消息队列等场景。Twemproxy,又称为Nutcracker,是一款轻量级的代理服务,用于在多台Redis或SSDB服务器之间分发请求,提高系统的可扩展性和可用性。本...
SSDB-磁盘上存储的Redis兼容NoSQL数据库 SSDB是高性能键值(key-string,key-zset,key-hashmap)NoSQL数据库,是Redis的替代产品。 SSDB稳定,可立即投入生产,并被包括QIHU 360在内的许多互联网公司广泛使用。特征...
SSDB 支持 Redis 网络协议, 所以你可以用 Redis 的客户端来连接 SSDB 服务器. 但是, 使用 SSDB 客户端是最高效的方式. 所有的 SSDB 客户端 API 都是支持二进制数据的, 二进制数据即是字符串, 字符串就是二进制数据...
SSDB是一个高性能、可替代Redis的键值存储系统,设计用于处理大量数据。它支持多种数据结构,如字符串、列表、哈希表和有序集合,这使得它在许多应用场景下非常有用。 接着,我们来谈谈Redis。Redis是一个开源的、...
其目标是作为Redis的替代品或补充,特别是在面对十亿级别列表数据存储时。SSDB利用Google LevelDB作为存储引擎,以实现高效的读写性能和内存占用优化。 1. SSDB的特点: - **数据结构**:SSDB提供了与Redis类似的...
SSDB(Simple Scalable Database)是一款高性能、可扩展的NoSQL数据库系统,主要设计用于替代Redis,尤其是在Windows操作系统上的应用场景。SSDB的核心特性包括键值存储、哈希表、集合、有序集合等数据结构,支持...
介绍dbproxy是一个采用C 11编写的代理服务器,支持redis和 ssdb数据库。 其主要用于扩容和提高系统负载。使用lua控制sharding,把不同的key-value映射到不同的后端redis或ssdb服务器。构建dbproxy支持windwos和linux...
SSDB(Simple Scalable Database)是一款高性能、分布式、键值对存储系统,主要设计用于替代Redis,尤其是在处理大规模数据时,SSDB在性能上表现出显著优势。本文将深入探讨SSDB Java驱动,以及如何利用它在Java应用...
代表产品包括Redis、SSDB、Voldemort、Oracle BDB等。 列存储数据库将数据存储为列族的形式,适合于分布式存储的海量数据,优势在于可以对某一列进行高效地读写操作。代表产品有Cassandra、HBase、Riak等。 文档型...
SSDB是一种高性能、轻量级的NoSQL数据库,常用于替代Redis,特别是在对大数据量处理有需求但资源有限的场景下。 在Python开发领域,SSDBAdmin利用Python的强大灵活性和丰富的库支持,实现了与SSDB数据库的高效交互...
SSDB 是一个高性能 NoSQL 数据库, 使用 LevelDB 作为存储引擎, 支持 Redis 协议.... SSDB一个高性能的支持丰富数据结构的 NoSQL 数据库, 用于替代 Redis...
SSDB(Simple Scalable Database)是一款高性能、高可用性的NoSQL数据库,主要设计用于替代Redis。它支持多种数据结构,如字符串、哈希、列表、集合、有序集合,且具有良好的扩展性,适用于大规模分布式环境。在管理...
这是一个实现了ssdb和redis同步协议的同步工具,它可以从ssdb或redis同步数据。目前同步redis还有bug,从比较大的redis同步的时候会出现被主库中断连接的情况,所以实际同步不支持redis的列表和ssdb的队列容器。遇到...
SSDB,即Simple Scalable Database,是一个高性能的Key-Value数据库,设计目标是对Redis的一种平价替代。SSDB支持多种数据类型,包括字符串、哈希表、列表、排序集等,同时提供了类似Redis的命令接口。SSDB在持久化...
作为 Redis 的替代品,SSDB 提供了类似 Redis 的 API,并且支持多种编程语言的客户端,如 PHP、C++、Python、Java、Lua、Ruby 和 Node.js。 在 SSDB 中,有三种主要的数据类型:KV(Key-value)、Hashmap 和 Zset...
SSDB(Simple Scalable Database)是一款高性能、高可用的NoSQL数据库,主要设计用于替代Redis在某些场景下的应用。SSDB的核心特性在于其强大的键值存储能力,支持高速查询,这使得它在大数据量的场景下依然能保持...