• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

多种方式测试redis入库性能

mysql 搞代码 4年前 (2022-01-09) 19次浏览 已收录 0个评论

? ? Transaction Pipeline 耗时(s) 测试一: N N 311 测试二: N Y 10 测试三: Y Y 7 测试四: Y N 10 ? 结论:Pipeline + Transaction方式是几种插入方式中性能最好的。虽然有点意外,但测试多次仍然是这个结论。 ? 测试代码如下: ? import org.apache.

?

? 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.pri<em>本文来源[email protected]搞@^&代*@码)网5</em>ntln("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

?

?

已有 0 人发表留言,猛击->> 这里<<-参与讨论

ITeye推荐

  • —软件人才免语言低担保 赴美带薪读研!—


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:多种方式测试redis入库性能

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址