Transaction | Pipeline | 耗时(s) | |
测试一: | N | N | 311 |
测试二: | N | Y | 10 |
测试三: | Y | Y | 7 |
测试四: | Y | N | 10 |
结论:Pipeline + Transaction方式是几种插入方式中性能最好的。虽然有点意外,但测试多次仍然是这个结论。
测试代码如下:
import org.apache.commons.lang.RandomStringUtils; import redis.clients.jedis.Jedis; import redis.clients.jedis.JedisPool; import redis.clients.jedis.JedisPoolConfig; import redis.clients.jedis.Pipeline; import redis.clients.jedis.Transaction; public class RedisTransactionTest { private static String host = "xx.xx.xx.xx"; private static JedisPool pool = new JedisPool(new JedisPoolConfig(), host); private long rowCount = 1000000; // 100万 public static void main(String[] args) { long start = System.currentTimeMillis(); new RedisTransactionTest().noTransactionNoPipeline(); System.out.println("noTransactionNoPipeline use " + (System.currentTimeMillis() - start) / 1000); pool = new JedisPool(new JedisPoolConfig(), host); start = System.currentTimeMillis(); new RedisTransactionTest().pipelineWithoutTransaction(); System.out.println("pipelineWithoutTransaction use " + (System.currentTimeMillis() - start) / 1000); pool = new JedisPool(new JedisPoolConfig(), host); start = System.currentTimeMillis(); new RedisTransactionTest().pipelineWithTransaction(); System.out.println("pipelineWithTransaction use " + (System.currentTimeMillis() - start) / 1000); pool = new JedisPool(new JedisPoolConfig(), host); start = System.currentTimeMillis(); new RedisTransactionTest().transactionNoPipeline(); System.out.println("transactionNoPipeline use " + (System.currentTimeMillis() - start) / 1000); } public void pipelineWithoutTransaction() { Jedis jedis = pool.getResource(); try { Pipeline p = jedis.pipelined(); for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); p.set(key, RandomStringUtils.randomNumeric(5)); p.expire(key, 5 * 60); } p.sync(); } catch (Exception e) { pool.returnResource(jedis); } } public void pipelineWithTransaction() { Jedis jedis = pool.getResource(); try { Pipeline p = jedis.pipelined(); p.multi(); for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); p.set(key, RandomStringUtils.randomNumeric(5)); p.expire(key, 5 * 60); } p.exec(); p.sync(); } catch (Exception e) { pool.returnResource(jedis); } } public void noTransactionNoPipeline() { Jedis jedis = pool.getResource(); try { for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); jedis.set(key, RandomStringUtils.randomNumeric(5)); jedis.expire(key, 5 * 60); } } catch (Exception e) { pool.returnResource(jedis); } } public void transactionNoPipeline() { Jedis jedis = pool.getResource(); try { Transaction tx = jedis.multi(); for (int i = 0; i < rowCount; i++) { String key = RandomStringUtils.randomAlphabetic(8); tx.set(key, RandomStringUtils.randomNumeric(5)); tx.expire(key, 5 * 60); } tx.exec(); } catch (Exception e) { pool.returnResource(jedis); } } }
--end
相关推荐
本次实验的目的主要是搭建Redis Cluster和TwemProxy Redis两种集群,分别对其进行性能测试,测试出集群性能的拐点,找出性能的瓶颈有哪些,并对两套集群进行比较,以便于在不同业务场景下择优选择。
memcache redis tair 性能测试报告,精心准备的常用缓存工具的性能测试报告,非常详细
本文档描述Redis中间件性能测试的范围、方法、资源、进度,作为该中间件性能测试的依据,该文档的目的主要有: 1.明确测试范围、测试对象 2.明确测试目标 3.明确测试环境需求,包括:测试需要的软、硬件环境以及测试...
memcached,redis性能测试,内存缓存系统的性能测试;
redis 写的操作性能测试代码
Redis性能测试 Redis、CoolHash、SqlServer性能对比 测试小例子 源码 jar包
Redis高性能缓存
测试redis
Redis集群测试
redis 写的操作性能测试代码
Redis性能优化小品。
wrapper 包装, 使用jedis 测试redis 读性能
04 Redis 性能优化13条军规.pdf04 Redis 性能优化13条军规.pdf04 Redis 性能优化13条军规.pdf04 Redis 性能优化13条军规.pdf04 Redis 性能优化13条军规.pdf04 Redis 性能优化13条军规.pdf04 Redis 性能优化13条军规....
10.1.2 redis常见性能问题和解决方案
Redis windows 测试redis持久化功能1
这只是一个redis的简单小测试类,大家有兴趣可以下,里面都是一些常见的用法
REDIS简介、单REDIS实例配置、主从结构配置、客户端程序
windows下启动redis2.8服务端和客户端启动工具以及性能测试工具等
通过本培训文档快速掌握Redis性能优化,主要包含Redis性能数据指标,常见性能问题分析,性能优化方案等。
集群技术是构建高性能网站架构的重要手段,试想在网站承受高并发访问压力的同时,还需要从海量数据中查询出满足条件的数据,并快速响应,我们必然想到的是将数据进行切片,把数据根据某种规则放入多个不同的服务器...