常用缓存性能对比,memcache,redis,tair

第1章     限制条件

前一周所做的分布缓存技术预言中有包括ehcache、memcache、redis、tair,还包括了基于MongoDB的分布式技术。测试中,考虑到各自功能的差异化特点,其中选择了memcache、redis、tair功能特性相近的缓存服务器进行性能对比,所以ehcache、MongoDB将不做为本次测试的规范,其原因如下:

1)  Ehcache是组件级别的缓存,要搭建一个独立的缓存服务器,需要用到ehcache server模块,这是个war包,能运行在web 容器中,决定整个缓存服务器性能的好坏因素太多,比如web服务器,集群方式等。跟memcache、redis、tair没有对比性。

2)  MongoDB是面向文档的数据库,跟缓存没有可比性。

第2章     测试场景概述

性能测试包括单机环境和分布式环境,主要针对memcache、redis、tair各缓存服务器在缓存了不同级别的数据下,多个线程并发操作向缓存set/get缓存数据,考虑到 络方面的负载,又将每次set/get操作的缓存数据的大小分为三个不同的级别:1KB,10KB,100KB,通过对上述的条件进行排列,取得以下的测试场景。

第3章     单机环境测试

3.1.      测试场景:

1.       当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

2.       在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

3.       并发200个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。

4.       并发200个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。

3.2.      测试环境

 

机器

操作系统

软件版本

数量

Memcached

10.19.90.74:11211

 

1.4.15

1

redis

10.19.90.77: 6379

 

redis-2.6.14

1

tair

Config_server

10.19.90.75:5198

Data_server

10.19.90.76:5191

 

2013-10-24

2

3.3.      测试结果

1.       当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

 

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KB)

memcached

905次/秒

390.717次/秒

406次/秒

redis

1179次/秒

451.04次/秒

88次/秒

tair

634次/秒

350次/秒

271次/秒

 

2.       在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KM)

memcache

850次/秒

201次/秒

393次/秒

redis

1260次/秒

452次/秒

96次/秒

tair

285次/秒

285次/秒

230次/秒

 

3.       在场景一完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KB)

memcache

9510次/秒

7500次/秒

3470次/秒

redis

10835次/秒

5651次/秒

–超时

tair

8857次/秒

3940次/秒

1890次/秒

 

4.       在场景三完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。

 

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KB)

memcache

10239次/秒

6758次/秒

3483次/秒

redis

11430次/秒

5392次/秒

983次/秒

tair

9932次/秒

4392次/秒

1012次/秒

 

第4章     分布式环境测试

4.1.      测试场景:

1.       当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

2.       在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

3.       在场景一完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。

4.       在场景三完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。

 

4.2.      分布式环境

memcache

机器

操作系统

软件版本

数量

10.19.90.74:11211

 

1.4.15

1

10.19.90.75:11211

 

1.4.15

1

10.19.90.76:11211

 

1.4.15

1

10.19.90.77:11211

 

1.4.15

1

 

tair configserver

机器

操作系统

软件版本

数量

10.19.90.75:5198

 

2013-10-24

1

 

tair dataserver

机器

操作系统

软件版本

数量

10.19.90.74:5191

 

2013-10-24

1

10.19.90.75:5191

 

2013-10-24

1

10.19.90.76:5191

 

2013-10-24

1

10.19.90.77:5191

 

2013-10-24

1

 

redis

机器

操作系统

软件版本

数量

10.19.90.74:6379

 

redis-2.6.14

1

10.19.90.75: 6379

 

redis-2.6.14

1

10.19.90.76: 6379

 

redis-2.6.14

1

10.19.90.77: 6379

 

redis-2.6.14

1

 

4.3.      测试结果

1.       当各缓存的数据库空时,以单线程通过各缓存客户端set调用向服务端推送数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

 

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KB)

memcache

850次/秒

472次/秒

259次/秒

redis

979次/秒

426次/秒

178次/秒

tair

697次/秒

363次/秒

184次/秒

 

2.       在场景一完成的情况下,以单线程通过各缓存客户端get调用向服务端获取数据,比较10000操作所消耗的时间,以上动作通过使用不同大小的单个缓存对象重复三次。

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KM)

memcache

840次/秒

345次/秒

385次/秒

redis

978次/秒

590次/秒

436次/秒

tair

701次/秒

307次/秒

283次/秒

 

3.       在场景一完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户set调用向服务端推送数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同大小的单个缓存对象重复三次。

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KB)

memcache

25783次/秒

22893次/秒

19826次/秒

redis

28457次/秒

15279次/秒

2826次/秒

tair

17382次/秒

14890次/秒

4930次/秒

 

4.       在场景三完成的情况下,缓存服务器有数据,并发1000个线程通过缓存软件的客户get调用向服务端获取数据,每个线程完成10000次的操作,比较各服务器的tps大小,以上动作通过使用不同的key取不同大小的数据,重复三次。

 

缓存服务器

第一次(缓存对象1KB)

第二次(缓存对象10KB)

第二次(缓存对象100KB)

memcache

25783次/秒

20893次/秒

9676次/秒

redis

39991次/秒

18735次/秒

2794次/秒

tair

15432次/秒

13723次/秒

3214次/秒

 

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2018年8月15日
下一篇 2018年8月15日

相关推荐