/******************************************************************************* * Copyright (c) 2005, 2014 springside.github.io * * Licensed under the Apache License, Version 2.0 (the "License"); *******************************************************************************/ package org.springside.examples.showcase.demos.redis; import org.springside.modules.nosql.redis.JedisTemplate; import org.springside.modules.nosql.redis.pool.JedisPool; import org.springside.modules.nosql.redis.pool.JedisPoolBuilder; import org.springside.modules.test.benchmark.BenchmarkTask; import org.springside.modules.test.benchmark.ConcurrentBenchmark; /** * 测试Redis用于计数器时incr()方法的性能. * * 可用-Dthread.count, -Dtotal.count 重置测试规模 * 可用-Dredis.host,-Dredis.port,-Dredis.timeout 重置连接参数 * * @author calvin */ public class RedisCounterBenchmark extends ConcurrentBenchmark { private static final int DEFAULT_THREAD_COUNT = 20; private static final long DEFAULT_TOTAL_COUNT = 100000; private String counterKey = "ss.counter"; private JedisPool pool; private JedisTemplate jedisTemplate; public static void main(String[] args) throws Exception { RedisCounterBenchmark benchmark = new RedisCounterBenchmark(); benchmark.execute(); } public RedisCounterBenchmark() { super(DEFAULT_THREAD_COUNT, DEFAULT_TOTAL_COUNT); } @Override protected void setUp() { pool = new JedisPoolBuilder().setDirectHostAndPort("localhost", "6379").setPoolSize(threadCount).buildPool(); jedisTemplate = new JedisTemplate(pool); // 重置Counter jedisTemplate.set(counterKey, "0"); } @Override protected void tearDown() { pool.destroy(); } @Override protected BenchmarkTask createTask() { return new CounterTask(); } public class CounterTask extends BenchmarkTask { @Override protected void execute(int requestSequence) { jedisTemplate.incr(counterKey); } } }