redis使用Pipeline管道提升写入速度在单实例redis环境,我们可以采用Pipeline的方式写入数据,采用管道的方式将多个key 值一起提交,较一个key值提交一次,减少了IO,速度会明显提升,下面是采用管道和不采用管道的方式比较执行10万次的,时间比较。pa ckage?com.hxl;import?java.util.LinkedHashSet;import?java.util.Set ;import?redis.clients.jedis.BinaryJedis;import?redis.clients.jedi s.HostAndPort;import?redis.clients.jedis.Jedis;import?redis.clien ts.jedis.JedisCluster;import?redis.clients.jedis.JedisPoolConfig; import?redis.clients.jedis.Pipeline;public?class?PipelineTest?{?/ ?@paramargs/?public?static?void?main(String[]?args)?{?i nt?count?=?100000;?long?start?=?System.currentTimeMillis();?witho utPipeline(count);?long?end?=?System.currentTimeMillis();?System. out.println("withoutPipeline:"?+?(end?-?start));?start?=?System. currentTimeMillis();?usePipeline(count);?end?=?System.currentTime Millis();?System.out.println("usePipeline:"?+?(end?-?start));?}? private?static?void?withoutPipeline(int?count)?{JedisPoolConfig poolConfig?=?new?JedisPoolConfig();?//最大连接数poolConfig.setMaxTot al(1);?//最大空闲数poolConfig.setMaxIdle(1);?//最大允许等待时间,如果超过这个时间还未获 取到连接,则会报JedisException异常:?//Couldnotgetaresourcefromthepo olpoolConfig.setMaxWaitMillis(1000);?//Set?nodes=newLinkedHas hSet();?//nodes.add(newHostAndPort("192.168.56.91",6379));?//no des.add(newHostAndPort("192.168.56.91",7379));?//nodes.add(new HostAndPort("192.168.56.92",6379));?//nodes.add(newHostAndPort( "192.168.56.92",7379));?//nodes.add(newHostAndPort("192.168.56. 93",6379));?//nodes.add(newHostAndPort("192.168.56.93",7379)); ?//JedisClustercluster=newJedisCluster(nodes,poolConfig);??J edisjr?=?null;?try?{?jr?=?new?Jedis("192.168.56.91",?8379);?for? (int?i?=?0;?i?on?e)?{?e.printStackTrace();?}?finally?{?if?(jr?!=?null)?{?jr.dis connect();?}?}?}?private?static?void?usePipeline(int?count)?{Jed isPoolConfigpoolConfig?=?new?JedisPoolConfig();?//最大连接数www.442 26.netpoolConfig.setMaxTotal(1);?//最大空闲数poolConfig.setMaxIdle( 1);?//最大允许等待时间,如果超过这个时间还未获取到连接,则会报JedisException异常:www.f-1.cc?// CouldnotgetaresourcefromthepoolpoolConfig.setMaxWaitMill is(1000);?Set?nodes?=?new?LinkedHashSet ();?//nodes.add(newHostAndPort("192.168.56.91",6379));?//nodes. add(newHostAndPort("192.168.56.91",7379));?//nodes.add(newHost AndPort("192.168.56.92",6379));?//nodes.add(newHostAndPort("192 .168.56.92",7379));?//nodes.add(newHostAndPort("192.168.56.93", 6379));?//nodes.add(newHostAndPort("192.168.56.93",7379));?//J edisClustercluster=newJedisCluster(nodes,poolConfig);www.let aoqpyx.com???Jedisjr?=?null;?try?{?jr?=?new?Jedis("192.168.56.91 ",8379);??Pipelinepl?=?jr.pipelined();?for?(int?i?=?0;?i?;?i++)?{?pl.incr("age2");?}?pl.sync();?}?catch?(Exception?e)?{?e.printStackTrace();?}?finally?{?if?(jr?!=?null)?{?jr.disconnect();?}?}?}}采用管道的消耗时间明显少很多: |
|