`
zhaohaolin
  • 浏览: 1035878 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

windows下redis和memcached的性能对比测试【转】

阅读更多

在windows下测试了redis和memcached的性能,如下:

jedis get 20000次的执行时间:1265毫秒

jedis set 20000次的执行时间:1313毫秒

 

jedis 同时启动60个线程的执行时间:21609毫秒

xmemcached get执行20000次的时间:3219毫秒

 

xmemcached set 20000次的执行时间:3000毫秒

xmemcached 同时启动60个线程的执行时间:75562毫秒

可以看出redis的性能要好于memcached!


redis代码:

01 public class Demo {
02  
03      public static void main(String[] args) throws Exception {
04          Demo demo = new Demo();
05          demo.test();
06      }
07       
08      public void test() throws Exception {
09          Jedis jedis = new Jedis( "localhost" );
10          jedis.set( "key" , "mykey" );
11           
12          long begin = System.currentTimeMillis();
13          for ( int i= 0 ; i< 20000 ; i++)
14              jedis.get( "key" );
15          long end = System.currentTimeMillis();
16          System.out.println( "jedis get20000次的执行时间:" + (end - begin) + "毫秒" );
17           
18          begin = System.currentTimeMillis();
19          for ( int i= 0 ; i< 20000 ; i++)
20              jedis.set(String.valueOf(i), String.valueOf(i));
21          end = System.currentTimeMillis();
22          System.out.println( "jedis set 20000次的执行时间:" + (end - begin) + "毫秒" );
23           
24          begin = System.currentTimeMillis();
25          Thread t[] = new Thread[ 60 ];
26          for ( int j= 0 ; j<t.length; j++) {
27              t[j] = new TestThread();
28              t[j].start();
29          }
30           
31          for ( int j= 0 ; j<t.length; j++) {
32              t[j].join();
33          }
34          end = System.currentTimeMillis();
35          System.out.println( "jedis 启动" + t.length + "个线程的执行时间:" + (end - begin) + "毫秒" );
36      }
37  
38      class TestThread extends Thread {
39  
40          @Override
41          public void run() {
42              Jedis jedis = new Jedis( "localhost" );
43              for ( int i= 0 ; i< 20000 ; i++)
44                  jedis.get(String.valueOf(i));
45              jedis.disconnect();
46          }
47           
48      }
49 }

测试redis的代码时,发现同时启动的线程只能到达63,超过的线程都会失败。

排查很久,发现配置文件中有一句话:it's up to the number of file descriptors the Redis process is able to open.

估计在windows xp下只能到达64,那么还有一个呢?无法得知,查了好久也没有找到和linux下文件描述符想匹配的东西。

 

xmemcache代码:

01 public class Demo {
02  
03      public static void main(String[] args) throws Exception {
04          Demo demo = new Demo();
05          demo.test();
06      }
07       
08      public void test() throws Exception  {
09          MemcachedClient mc = new XMemcachedClient( "localhost" , 11211 );
10          mc.set( "key" , 2000 , "mykey" );
11           
12          long begin = System.currentTimeMillis();
13          for ( int i= 0 ; i< 20000 ; i++)
14              mc.get( "key" , 1000 );
15          long end = System.currentTimeMillis();
16           
17          System.out.println( "memcached get执行20000次的时间:" + (end - begin) + "毫秒" );
18           
19          begin = System.currentTimeMillis();
20          for ( int i= 0 ; i< 20000 ; i++)
21              mc.set(String.valueOf(i), 2000 ,String.valueOf(i));
22          end = System.currentTimeMillis();
23          System.out.println( "memcached set 20000次的执行时间:" + (end - begin) + "毫秒" );       
24           
25          mc.shutdown(); 
26           
27          begin = System.currentTimeMillis();
28          Thread t[] = new Thread[ 60 ];
29          for ( int j= 0 ; j<t.length; j++) {
30              t[j] = new TestThread();
31              t[j].start();
32          }
33           
34          for ( int j= 0 ; j<t.length; j++) {
35              t[j].join();
36          }
37          end = System.currentTimeMillis();
38          System.out.println( "memcached 启动" + t.length + "个线程的执行时间:" + (end - begin) + "毫秒" );      
39      }
40  
41      class TestThread extends Thread {
42  
43          @Override
44          public void run() {
45              try {
46                  MemcachedClient mc = new XMemcachedClient( "localhost" , 11211 );
47                  for ( int i= 0 ; i< 20000 ; i++)
48                      mc.get(String.valueOf(i), 1000 );
49                  mc.shutdown();
50              }
51              catch (Exception e) {
52                   
53              }
54          }
55           
56      }
57 }
分享到:
评论

相关推荐

    redis学习笔记

    - **数据持久化的重要性**:虽然Redis主要依赖内存存储,但它也提供了数据持久化机制,包括RDB(快照)和AOF(日志)两种方式,确保即使在机器重启或断电情况下也能恢复数据,提高了数据的安全性和可靠性。...

    2021春招Redis高频面试题.pdf

    - **稳定性考虑**:为了保持Redis的稳定性和性能,官方选择了专注于主流平台。 #### 8. 一个字符串类型的值能存储最大容量是多少? - **最大容量**:单个字符串类型的值最大可以存储1GB的数据。 #### 9. 为什么...

    memcached资料

    - **Memcached vs Redis**:对比两者在性能、功能、适用场景上的差异,选择适合项目需求的解决方案。 7. **应用场景** - **Web缓存**:减轻数据库压力,加速动态页面的生成。 - **Session共享**:在分布式环境中...

    ApacheBench测试详解

    2. **性能对比**:比较不同服务器软件或配置的性能差异。 3. **压力测试**:模拟高并发场景,检查服务器在极限情况下的稳定性。 总之,ApacheBench是一个强大的工具,帮助我们了解服务器在不同条件下的表现,为优化...

    PHP从入门到精通 经典课件

    28. **性能优化**:讨论PHP性能优化技巧,如缓存技术(例如Memcached、Redis)、PHP优化配置等。 通过以上知识点的学习,你将能够从零开始掌握PHP编程,理解其核心概念,并具备开发实际Web应用程序的能力。持续学习...

Global site tag (gtag.js) - Google Analytics