您的位置:首页 > 数据库 > Redis

基于Java Client的Redis与Tarantool HASH性能对比

2016-01-28 18:12 891 查看

前言

Tarantool 是一款高性能Key/Value in-memory NoSQL database 最新版本为1.6.7 http://tarantool.org/

Redis 现在使用非常多的内存 Key/Value数据库,多用于缓存业务场景。最新版本为 3.0.6 http://www.redis.io/

tarantool-java最新版本为1.6 https://github.com/tarantool/tarantool-java/ 是Tarantool的java connector

Jedis最新版本为2.8 https://github.com/xetorthio/jedis 是Redis java client

关于Tarantool的安装可参考前篇文章,Redis的安装google可查到一堆资料。总之先把官网文档通读是非常好的习惯。

基于当前版本java client的测试

目的

本文基于文件去重的一个简单业务场景进行的测试,不能完全判定那款的性能高于那款,只是给读者一个可视性的参考。为什么写此文是因为之前看到一篇译文http://www.open-open.com/news/view/dbaaf4 原文:http://highscalability.com/blog/2015/12/30/how-to-choose-an-in-memory-nosql-solution-performance-measur.html 作者使用YCSB测试了主流的NoSQL数据库,最后得出的结论是【Tarantool在所有负载类型测试中皆取得了最优成绩。它创建了一个无锁内存引擎,以协同多任务方式进行操作而不是互斥或并行处理方式。根据以下性能图表现,我们的结论是Tarantool的高吞吐量处理是其最大优势之一。因此在多数场合下,Tarantool是用户的最佳选择。】于是对Tarantool产生了极大的兴趣。

准备

1.Tarantool 准备

[code]box.schema.space.create('storage')
box.space.storage:create_index('primary', {type = 'hash', parts = {1, 'STR'}})
box.schema.user.create('storage', { password = 'storage' })
box.schema.user.grant('storage', 'execute,read,write', 'universe')
box.space['storage']:format{{name='md5', type='str'},{name='filePath', type='str'}}


安装请参看上篇文章

创建空间storage

创建主索引

创建访问用户storage

storage用户权限设置

空间kv类型格式化,md5为key 主键索引 ,filePath value

这就是我们基本业务场景的数据结构,key为MD5值,value为对应的文件地址

2.Redis 准备

安装运行

[code]wget http://download.redis.io/releases/redis-3.0.6.tar.gz tar xzf redis-3.0.6.tar.gz
make  && make install
cd redis-3.0.6
src/redis-server


3.操作系统准备

CentOS6.5 2G 1core

开始

双方测试代码均使用最基本直连方式测试,且Redis 使用HASH 方式。

TarantoolConnection16 con = new TarantoolConnection16Impl("192.168.254.133", 3301); 

 ... 

Jedis jedis = new Jedis("192.168.254.133", 6379);


(1). tarantool 分别操作10000,100000,1000000条记录的完成时间





(2). Redis分别操作10000,100000,1000000条记录的完成时间





注:在Redis使用直连hash set一百万条数据的时候java始终报异常,所以这里的值是0,在使用pipline后可以看到效率有非常大的提高,所以灵活的运用Redis的批量操作工具会带来意想不到性能提升!

(3).在使用多连接数进行操作的时候Tarantool的平均时间也是超过Redis的

结语

在这个业务场景中基于Java Client的测试Redis是优于Tarantool的,不知道国内是否有公司使用或者研究过Tarantool?在我看来Tarantool还是非常优秀的,详细可以参看官方文档。他的中文资料还是相对比较少。不过对于搞技术的人来说,没有中文资料并不能阻碍学习。希望有使用经验的相互同学多多交流,有不对的地方也多多指正,共同学习进步。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: