基于leveldb引擎的高性能Nosql服务ssdb的测试使用

两个或者更多的主服务器. 当其中一部分出现故障时, 剩余的主服务器仍然能正常接受写请求, 来保证服务是可以正常使用的。

SSDB 的主要特点:

支持 zset, map 数据结构, 可替代 Redis

特别适合存储大量集合数据

使用 Google LevelDB 作为存储引擎

支持主从同步, 多主同步

客户端支持 PHP, C++, Python, Lua, Java, Ruby, nodejs, Go 等

内存占用极少

ssdb 项目地址:

https://github.com/ideawu/ssdb

安装及服务配置的方法:

wget –no-check-certificate https://github.com/ideawu/ssdb/archive/master.zipunzip mastercd ssdb-mastermake#optional, install ssdb in /usr/local/ssdbsudo make installstart master./ssdb-server ssdb.confor start as daemon./ssdb-server -d ssdb.confstart slave./ssdb-server ssdb_slave.confssdb command line./tools/ssdb-cli -p 8888stop ssdb-serverkill `cat ./var/ssdb.pid`

需要提前先安装jemalloc内存管理器的,不然无法继续 ~

安装成功,然后跑一下 ~

果然是大量兼容redis的 ~

ssdb也可以用redis里面比较常用的hash。

#xiaorui.cc[root@65 ~]# ssdb-clissdb (cli) – ssdb command line tool.Copyright (c) 2012-2013 ideawu.com’h’ or ‘help’ for help, ‘q’ to quit.ssdb 127.0.0.1:8888> hset a one 1ok(0.000 sec)ssdb 127.0.0.1:8888> hset a two 2ok(0.000 sec)ssdb 127.0.0.1:8888> hset a three 3ok(0.000 sec)ssdb 127.0.0.1:8888> hscan a “” “” 10keyvalue————————- one: 1 three: 3 two: 23 result(s) (0.000 sec)hai

根据结果来排序的存储类型 zset !

ssdb 127.0.0.1:8888>ssdb 127.0.0.1:8888>ssdb 127.0.0.1:8888>ssdb 127.0.0.1:8888>ssdb 127.0.0.1:8888> zsize b0(0.000 sec)ssdb 127.0.0.1:8888> zset b b1 1ok(0.000 sec)ssdb 127.0.0.1:8888> zset b b2 2ok(0.000 sec)ssdb 127.0.0.1:8888> zset b b3 33ok(0.000 sec)ssdb 127.0.0.1:8888> zset b b4 8888ok(0.000 sec)ssdb 127.0.0.1:8888> zscan b “” “” 10error: client_error(0.000 sec)ssdb 127.0.0.1:8888> zscan b “” “” “” 10keyscore————————- b1: 1 b2: 2 b3: 33 b4: 88884 result(s) (0.000 sec)ssdb 127.0.0.1:8888>ssdb 127.0.0.1:8888> zsize b4(0.000 sec)ssdb 127.0.0.1:8888> zsize b4(0.000 sec)ssdb 127.0.0.1:8888> zscan b “” “” “” 10keyscore————————- b1: 1 b2: 2 b3: 33 b4: 88884 result(s) (0.000 sec)ssdb 127.0.0.1:8888> zclear b4(0.000 sec)ssdb 127.0.0.1:8888> zscan b “” “” “” 10keyscore————————-0 result(s) (0.000 sec)ssdb 127.0.0.1:8888>

新版的ssdb也出来个ttl的东西,来控制kv的生效时间,很赞 ~

ssdb 127.0.0.1:8888> setx yoururl xiaorui.cc 10ok(0.000 sec)ssdb 127.0.0.1:8888> get yoururlxiaorui.cc(0.000 sec)ssdb 127.0.0.1:8888> get yoururlxiaorui.cc(0.000 sec)ssdb 127.0.0.1:8888> get yoururlxiaorui.cc(0.000 sec)ssdb 127.0.0.1:8888> get yoururlxiaorui.cc(0.000 sec)ssdb 127.0.0.1:8888> get yoururlnot_found(0.000 sec)ssdb 127.0.0.1:8888> get yoururlnot_found

为了方便操作ssdb服务可以写成一个启动关闭脚本。

# /bin/sh## chkconfig:345 98 98# description: SSDB is a fast NoSQL database for storing big list of billions of elements# processname:ssdbcase “$1” in ‘start’)/usr/local/ssdb/ssdb-server -d /usr/local/ssdb/ssdb.confecho “ssdb started.”;; ‘stop’)kill `cat /usr/local/ssdb/var/ssdb.pid`echo “ssdb stopped.”;; ‘restart’)kill `cat /usr/local/ssdb/var/ssdb.pid`echo “ssdb stopped.”sleep 0.5/usr/local/ssdb/ssdb-server -d /usr/local/ssdb/ssdb.confecho “ssdb started.”;; *)echo “Usage: $0 {start|stop|restart}”exit 1 ;;esacexit 0

直接来个redis和ssdb的命令对比 !

Redis SSDBkv get getset setdel delincr/incrBy incrdecr/decrBy decrgetMultiple multi_getsetMultiple multi_setdel(multiple) multi_delkeys scan(for kv type only)hashmap hget hgethset hsethdel hdelhIncrBy hincrhDecrBy hdecrhKeys hkeyshVals hscanhMGet multi_hget(in schedule)hMSet multi_hset(in schedule)hLen hsize(in schedule)zset zScore zgetzAdd zsetzRem zdelzRange zRangeByScore zscanzIncrBy zincrzDecrBy zdecrzCount zCard zsize(in schedule)

我们项目有很多是python写的,看了下支持的语言接口,ssdb也是支持python的,我这边就简单跑下例子 ~ 果然和redis很相像的哈!

只有经历过地狱般的折磨,才有征服天堂的力量,只有流过血的手指,才能弹出世间的绝唱。

基于leveldb引擎的高性能Nosql服务ssdb的测试使用

相关文章:

你感兴趣的文章:

标签云: