写了个测试程序,测试redis和memcached的一些性能,Redis的客户端我用的是Jedis,memcached的客户端用的是memcached-cient ,测试程序很简单,主要是想看看在读写一定数量的数据时两个框架所表现出来的性能如何。代码如下:
redis
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<num;i++){
jedis.set(""+i, "hello "+i);
}
long t2 = System.currentTimeMillis();
System.out.println("使用Redis set "+num+"条记录所花的时间:"+(t2-t1)+" ms");
for(int i=0;i<num;i++){
jedis.get(""+i);
}
long t3 = System.currentTimeMillis();
System.out.println("使用 Redis get "+num+"条记录所花的时间:"+(t3-t2)+" ms");
}
}
memcached:
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<num;i++){
client.set(""+i, "hello "+i);
}
long t2 = System.currentTimeMillis();
System.out.println("使用Memcached set "+num+"条记录所花的时间:"+(t2-t1)+" ms");
for(int i=0;i<num;i++){
client.get(""+i);
}
long t3 = System.currentTimeMillis();
System.out.println("使用Memcached get "+num+"条记录所花的时间:"+(t3-t2)+" ms");
// for(int i=0;i<100;i++){
// /*将对象加入到memcached缓存*/
// boolean success = client.set("" + i, "Hello!");
// /*从memcached缓存中按key值取对象*/
// String result = (String) client.get("" + i);
// System.out.println(String.format("set( %d ): %s", i, success));
// System.out.println(String.format("get( %d ): %s", i, result));
//
// }
//
// for(int i=0;i<10;i++){
// client.delete(""+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的数据也是存储在内存中,同时也会异步的存储在本地磁盘中。
分享到:
相关推荐
本文将深入探讨Redis与Memcached的选型对比,分析它们的性能测试结果,并探讨各自的优缺点。 Redis与Memcached都是基于NoSQL的内存数据结构存储系统,用于加速应用程序,支持亚毫秒级延迟,并且都是开源项目,用...
memcached,redis性能测试,内存缓存系统的性能测试;
7. 测试和优化:搭建完毕后,对TreeNM进行测试,确保它能够正常工作,并通过监控结果对Redis和Memcached进行必要的性能调优。 上述步骤是一个大致的流程,根据TreeNM的具体版本和文档,具体操作可能会有所不同。在...
4. **故障检测**:自动检测 memcached 服务状态,一旦发现问题,会立即通知管理员。 **免费与易用性** TreeNMS 的免费特性使其成为中小型企业和个人开发者理想的选择。无需支付高昂的费用,即可享受到专业的数据库...
标题 "memcached数据完整迁移到redis" 描述的是一个数据迁移的过程,从使用 memcached 存储的数据转换到使用 redis 存储。这个过程在 IT 领域中是常见的,因为不同的缓存系统有不同的特性和优势。让我们深入探讨这个...
【性能测试报告概述】 这份报告详细对比了三种常用的内存数据库——memcache、redis以及tair的性能表现。测试目的是为了评估这些缓存工具在不同场景下的处理能力,特别是在并发操作和不同大小的数据存储上的效率。...
Memcached 和 Redis 性能测试 Memcached 是一个高性能的分布式内存对象缓存系统,用于动态 Web 应用以减轻数据库负载。它通过在内存中缓存数据和对象来减少读取数据库的次数,从而提供动态、数据库驱动网站的速度。...
描述中的“NULL”意味着没有具体的描述,但我们可以通过标题推测,文章可能包含了作者对这三种缓存技术的个人理解和实践经验,包括但不限于它们的配置、API使用、性能测试和最佳实践。 **标签解析** 1. **源码** -...
与共享内存不同,Memcached的内存管理不依赖于系统共享内存机制,因此不受共享内存大小的限制。 6. **应用场景** Memcached广泛应用于高并发的Web应用,如社交网络、新闻站点等,它可以极大地缓解数据库的压力,...
《memcache、redis、tair性能对比测试报告》详述了在分布缓存技术领域,对这三种主流缓存服务器的性能评估。测试主要目的是在相同功能特性的基础上,对比它们在不同场景下的表现,因此排除了ehcache(组件级缓存)和...
Redis是一个高性能的键值存储系统,根据官方给出的性能测试结果,Redis能够达到非常高的读写速度。例如,在一次基准测试中,Redis的`set`操作可以达到每秒110,000次,`get`操作可以达到每秒81,000次。这样的性能对于...
测试环境为特定的操作系统和软件版本,如Memcached、Redis和Tair的服务器配置。 测试结果显示: - **set操作**:在单线程环境下,memcache的性能最优,其次是redis,而tair的表现相对较弱,尤其是在处理大体积数据...
2. **集群管理**:对于大型分布式系统,TreeNMS能够有效地管理Redis和memcached集群,包括节点的添加、删除、监控和故障检测,确保系统的高可用性。 3. **实时监控**:提供实时性能指标,如内存使用情况、命令执行...
### Memcached 安装步骤与注意事项 Memcached是一款高性能、分布式内存对象缓存系统,用于减轻数据库负担,通过缓存数据库查询结果和其他可缓存的数据来加速动态Web应用。以下是安装Memcached的具体步骤: 1. **...
- **Redis与memcached对比**:Redis与memcached类似,都是内存数据库,但Redis支持更多的数据结构和操作,可以执行事务、发布/订阅消息,且提供了持久化功能。相比之下,memcached仅提供简单的键值对存储。 - **...
cpp-twemproxy是一个针对memcached和redis的高性能、轻量级的代理服务,它由Twitter开发并开源。这个代理服务的主要目标是解决在大规模分布式缓存环境中的连接管理和负载均衡问题,提供了一种集中式的解决方案,可以...
Redis与Memcached相比,同样提供了高性能的内存数据结构存储系统,但Redis提供了更多的数据结构和更丰富的功能,如持久化存储和发布订阅等。Redis的安装和配置与Memcached类似,但其功能更为强大,支持的数据结构...
Redis是一种开源的键值对存储系统,它属于NoSQL数据库的一种,与Memcached类似但更加强大。不同于Memcached只支持内存存储,Redis的数据可以持久化存储在磁盘上,从而避免了服务器重启后数据丢失的问题。Redis支持...