来自:mjsws > 馆藏分类
配色: 字号:
redis使用Pipeline管道提升写入速度
2019-01-12 | 阅:  转:  |  分享 
  
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();?}?}?}}采用管道的消耗时间明显少很多:
献花(0)
+1
(本文系mjsws首藏)