热门标签 | HotTags
当前位置:  开发笔记 > 后端 > 正文

redis与memcached性能测试

写了个测试程序,测试redis和memcached的一些性能,Redis的客户端我用的是Jedis,memcached的客户端用的是memcached-cient,测试程序很简单,主要是想看看在读写一定数量的数据时两个框架所表现出来的性能如何
写了个测试程序,测试redis和memcached的一些性能,Redis的客户端我用的是Jedis,memcached的客户端用的是memcached-cient ,测试程序很简单,主要是想看看在读写一定数量的数据时两个框架所表现出来的性能如何。代码如下:

redis
Java代码  
  1. package com.ht;   
  2.   
  3. import redis.clients.jedis.Jedis;   
  4.   
  5. public class JedisTest {   
  6.   
  7.     /**  
  8.      * @param args  
  9.      */  
  10.     public static void main(String[] args) {   
  11.         // TODO Auto-generated method stub   
  12.            
  13.         String serverIp = "192.168.83.1";   
  14.            
  15.         int port = 6379;   
  16.            
  17.         Jedis jedis = new Jedis(serverIp, port);   
  18.            
  19.         jedis.connect();   
  20.         int num = 1000;   
  21.         long t1 = System.currentTimeMillis();   
  22.         for(int i=0;i
  23.             jedis.set(""+i, "hello "+i);   
  24.         }   
  25.            
  26.         long t2 = System.currentTimeMillis();   
  27.            
  28.         System.out.println("使用Redis set "+num+"条记录所花的时间:"+(t2-t1)+" ms");   
  29.            
  30.         for(int i=0;i
  31.             jedis.get(""+i);   
  32.         }   
  33.            
  34.         long t3 = System.currentTimeMillis();   
  35.            
  36.         System.out.println("使用 Redis get "+num+"条记录所花的时间:"+(t3-t2)+" ms");   
  37.     }   
  38.   
  39. }  
package com.ht;

import redis.clients.jedis.Jedis;

public class JedisTest {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String serverIp = "192.168.83.1";
		
		int port = 6379;
		
		Jedis jedis = new Jedis(serverIp, port);
		
		jedis.connect();
		int num = 1000;
		long t1 = System.currentTimeMillis();
		for(int i=0;i


memcached:

Java代码 
  1.   
  2. package com.ht;   
  3.   
  4. import com.alisoft.xplatform.asf.cache.memcached.client.MemCachedClient;   
  5. import com.alisoft.xplatform.asf.cache.memcached.client.SockIOPool;   
  6.   
  7. public class TestMemcached {   
  8.   
  9.     public static void main(String[] args) {   
  10.         String[] server = {"192.168.83.1:12345"};   
  11.         //初始化SockIOPool,管理memcached连接池   
  12.         SockIOPool pool = SockIOPool.getInstance();   
  13.         pool.setServers(server);   
  14.            
  15.         pool.setFailover(true);   
  16.            
  17.         pool.setInitConn(10);   
  18.            
  19.         pool.setMinConn(5);   
  20.            
  21.         pool.setMaxConn(100);   
  22.            
  23.         pool.setMaintSleep(30);   
  24.            
  25.            
  26.         pool.setNagle(false);   
  27.            
  28.         pool.setSocketTO(3000);   
  29.            
  30.         pool.setAliveCheck(true);   
  31.            
  32.         pool.initialize();   
  33.            
  34.         //建立memcachedclient 对象   
  35.         MemCachedClient client = new MemCachedClient();   
  36.            
  37.         int num =1000;   
  38.         long t1 = System.currentTimeMillis();   
  39.         for(int i=0;i
  40.             client.set(""+i, "hello "+i);   
  41.         }   
  42.         long t2 = System.currentTimeMillis();   
  43.         System.out.println("使用Memcached set "+num+"条记录所花的时间:"+(t2-t1)+" ms");   
  44.         for(int i=0;i
  45.             client.get(""+i);   
  46.         }   
  47.         long t3 = System.currentTimeMillis();   
  48.            
  49.         System.out.println("使用Memcached get "+num+"条记录所花的时间:"+(t3-t2)+" ms");   
  50.            
  51.         //      for(int i=0;i<100;i++){   
  52. //            /*将对象加入到memcached缓存*/     
  53. //        boolean success = client.set("" + i, "Hello!");     
  54. //            /*从memcached缓存中按key值取对象*/     
  55. //                     String result = (String) client.get("" + i);     
  56. //                     System.out.println(String.format("set( %d ): %s", i, success));     
  57. //                      System.out.println(String.format("get( %d ): %s", i, result));     
  58. //   
  59. //      }   
  60. //         
  61. //      for(int i=0;i<10;i++){   
  62. //          client.delete(""+i);   
  63. //      }   
  64.            
  65.     }   
  66. }  
package com.ht;

import com.alisoft.xplatform.asf.cache.memcached.client.MemCachedClient;
import com.alisoft.xplatform.asf.cache.memcached.client.SockIOPool;

public class TestMemcached {

	public static void main(String[] args) {
		String[] server = {"192.168.83.1:12345"};
		//初始化SockIOPool,管理memcached连接池
		SockIOPool pool = SockIOPool.getInstance();
		pool.setServers(server);
		
		pool.setFailover(true);
		
		pool.setInitConn(10);
		
		pool.setMinConn(5);
		
		pool.setMaxConn(100);
		
		pool.setMaintSleep(30);
		
		
		pool.setNagle(false);
		
		pool.setSocketTO(3000);
		
		pool.setAliveCheck(true);
		
		pool.initialize();
		
		//建立memcachedclient 对象
		MemCachedClient client = new MemCachedClient();
		
		int num =1000;
		long t1 = System.currentTimeMillis();
		for(int i=0;i



测试结果如下:

100000条数据

Redis:
使用Redis set 100000条记录所花的时间:31663 ms
使用 Redis get 100000条记录所花的时间:31518 ms

Memcached:

使用Memcached set 100000条记录所花的时间:23847 ms
使用Memcached get 100000条记录所花的时间:23080 ms

10000条数据

使用Redis set 10000条记录所花的时间:3354 ms
使用 Redis get 10000条记录所花的时间:3308 ms

memcached:
使用Memcached set 10000条记录所花的时间:2466 ms
使用Memcached get 10000条记录所花的时间:2366 ms



1000条数据:

使用Redis set 1000条记录所花的时间:415 ms
使用 Redis get 1000条记录所花的时间:356 ms

使用Memcached set 1000条记录所花的时间:376 ms
使用Memcached get 1000条记录所花的时间:291 ms


从测试结果来看memcached的读写性能在一定程序上确实要优于redis,当然,这也是预料之中的,memcached的所有数据都缓存在内存中,redis的数据也是存储在内存中,同时也会异步的存储在本地磁盘中。
推荐阅读
  • 本文介绍了数据库体系的基础知识,涵盖关系型数据库(如MySQL)和非关系型数据库(如MongoDB)的基本操作及高级功能。通过三个阶段的学习路径——基础、优化和部署,帮助读者全面掌握数据库的使用和管理。 ... [详细]
  • 近期参与了一个旨在提高在线平台大规模查询响应速度的项目,预计处理的数据量为2-3亿条,数据库并发量约为每秒1500次,未来可能增至3000次。通过对比Redis和MongoDB,最终选择了MongoDB,因其具备优秀的横向扩展性和GridFS支持下的Map/Reduce功能。 ... [详细]
  • 在分布式系统中,当多个服务器共同提供服务时,如何高效地将请求路由到正确的服务器是一个关键问题。传统的方法如简单哈希取模在服务器数量变化时会导致大量数据迁移。本文探讨了一致性哈希算法如何有效解决这一问题,确保系统的稳定性和高效性。 ... [详细]
  • 本文深入探讨了Redis的快照持久化机制,包括其工作原理、配置方法以及如何手动触发快照。通过这种方式,Redis能够确保在服务器重启后数据的安全性和完整性。 ... [详细]
  • 成为一名高效的Java架构师不仅需要掌握高级Java编程技巧,还需深入理解JVM的工作原理及其优化方法。此外,对池技术(包括对象池、连接池和线程池)的应用、多线程处理、集合对象的内部机制、以及常用的数据结构和算法的精通也是必不可少的。同时,熟悉Linux操作系统、TCP/IP协议栈、HTTP协议等基础知识,对于构建高效稳定的系统同样重要。 ... [详细]
  • 本文深入探讨了分布式文件系统的核心概念及其在现代数据存储解决方案中的应用,特别是针对大规模数据处理的需求。文章不仅介绍了多种流行的分布式文件系统和NoSQL数据库,还提供了选择合适系统的指导原则。 ... [详细]
  • 本文回顾了作者在求职阿里和腾讯实习生过程中,从最初的迷茫到最后成功获得Offer的心路历程。文中不仅分享了个人的面试经历,还提供了宝贵的面试准备建议和技巧。 ... [详细]
  • Redis:缓存与内存数据库详解
    本文介绍了数据库的基本分类,重点探讨了关系型与非关系型数据库的区别,并详细解析了Redis作为非关系型数据库的特点、工作模式、优点及持久化机制。 ... [详细]
  • 探讨Redis的最佳应用场景
    本文将深入探讨Redis在不同场景下的最佳应用,包括其优势和适用范围。 ... [详细]
  • 本文深入探讨了NoSQL数据库的四大主要类型:键值对存储、文档存储、列式存储和图数据库。NoSQL(Not Only SQL)是指一系列非关系型数据库系统,它们不依赖于固定模式的数据存储方式,能够灵活处理大规模、高并发的数据需求。键值对存储适用于简单的数据结构;文档存储支持复杂的数据对象;列式存储优化了大数据量的读写性能;而图数据库则擅长处理复杂的关系网络。每种类型的NoSQL数据库都有其独特的优势和应用场景,本文将详细分析它们的特点及应用实例。 ... [详细]
  • 深入解析Redis中五大数据类型的实用应用场景与技巧
    本文将深入探讨Redis中五大核心数据类型的实际应用场景与使用技巧。通过详尽的分析和示例,帮助读者理解每种数据类型的特性和最佳实践,内容涵盖广泛,步骤清晰,细节处理得当,旨在为开发者提供全面的指导。 ... [详细]
  • 安装MemcachedMemcached整理安装PythonMemcachedAPIpython操作啊Memcached使用Python-memcached模块下载安装:https ... [详细]
  • Linux环境下Memcached安装指南
    本文详细介绍如何在Linux虚拟机上安装Memcached,包括必要的依赖库安装,以及使用Xshell进行文件传输的具体步骤。 ... [详细]
  • 深入理解Play Framework 1.2.7中的缓存机制
    本文探讨了Play Framework 1.2.7版本中提供的缓存解决方案,包括Ehcache和Memcached的集成与使用。文章详细介绍了缓存相关的类及其功能,以及如何通过配置选择合适的缓存实现。 ... [详细]
  • 本文详细介绍了在 Windows 7 上安装和配置 PHP 5.4 的 Memcached 分布式缓存系统的方法,旨在减少数据库的频繁访问,提高应用程序的响应速度。 ... [详细]
author-avatar
恨透这一切_249
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有