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的数据也是存储在内存中,同时也会异步的存储在本地磁盘中。