培天王 发表于 2015-8-31 11:00:31

memcache计数功能测试

  


import java.io.IOException;
import java.util.concurrent.TimeoutException;
import net.rubyeye.xmemcached.KeyIterator;
import net.rubyeye.xmemcached.MemcachedClient;
import net.rubyeye.xmemcached.MemcachedClientBuilder;
import net.rubyeye.xmemcached.XMemcachedClientBuilder;
import net.rubyeye.xmemcached.exception.MemcachedException;
import net.rubyeye.xmemcached.utils.AddrUtil;
import org.junit.After;
import org.junit.Before;
import org.junit.Test;
/**
* Xmemcached测试
*
*/
public class XMemecacheTest {
MemcachedClient memcachedClient;
@Before
public void before() {
MemcachedClientBuilder builder = new XMemcachedClientBuilder(AddrUtil.getAddresses("localhost:11211"));
try {
memcachedClient = builder.build();
memcachedClient.setOpTimeout(10000);
} catch (IOException e) {
e.printStackTrace();
}
}
@After
public void after() {
try {
// close memcached client
memcachedClient.shutdown();
} catch (IOException e) {
System.err.println("Shutdown MemcachedClient fail");
e.printStackTrace();
}
}
@Test
public void testLoop() throws Exception {
memcachedClient.delete("incrkey");
// memcachedClient.flushAll();
// showAll();
// while(true)
// testCreate();
long start = System.currentTimeMillis();
System.out.println("start:" + memcachedClient.incr("incrkey", 1, 0));
for (int i = 0; i < 1000; i++) {
MyRun run = new MyRun(this.memcachedClient, 100);
run.start();
run.join();
}
long end = System.currentTimeMillis();
System.out.println("end:" + memcachedClient.get("incrkey"));
System.out.println(end - start);
}
}
class MyRun extends Thread {
MemcachedClient memcachedClient;
int i = 0;
public MyRun(MemcachedClient memcachedClient, int i) {
super();
this.memcachedClient = memcachedClient;
this.i = i;
}
public void run() {
int k = 0;
while (k < i) {
try {
memcachedClient.incr("incrkey", 1);
} catch (Exception e) {
e.printStackTrace();
}
k++;
}
}
}

根据以上测试得出结论:
  1000个线程,每个线程计数100次,用时约19秒。每秒大约5000
页: [1]
查看完整版本: memcache计数功能测试