首页

关于用法使用jedis的Pipeline的批次提交操作的性能对比完成代码示例

标签:性能优化,分布式,redis,clients,jedis,Pipeline     发布时间:2017-07-01   

一、前言

在使用大批量jedis客户端向redis服务器发起连接命令操作时,通常使用redis.clients.jedis.Pipeline方式,将所有的操作先计入管道中,然后再批量提交到redis服务器响应,可以很大程度提供redis的压力,从而提供整体性能。

二、代码示例

PipelineTest类 - 通过每次直接向redis服务器发送执行命令操作,和使用Pipeline管道批量提交的方式来进行对比性能延时,代码如下

import redis.clients.jedis.Jedis;@b@import redis.clients.jedis.Pipeline;@b@@b@public class PipelineTest {@b@	@b@	/**@b@	 * 没有使用管道的情况,发起redis进行指定key序列累加操作@b@	 * @param count@b@	 */@b@	private static void unusedPipeline(int count){@b@        Jedis jr = null;@b@        try {@b@            jr = new Jedis("127.0.0.1", 6379);@b@            for(int i =0; i<count; i++){@b@                jr.incr("testKey1");@b@            }@b@        } catch (Exception e) {@b@            e.printStackTrace();@b@        }finally{@b@            if(jr!=null){@b@                jr.disconnect();@b@            }@b@        }@b@    }@b@	@b@	/**@b@	 * 使用管道的情况,发起redis进行指定key序列累加操作@b@	 * @param count@b@	 */@b@    private static void usedPipeline(int count){@b@	        Jedis jr = null;@b@	        try {@b@	            jr = new Jedis("127.0.0.1", 6379);@b@	            Pipeline pl = jr.pipelined();@b@	            for(int i =0; i<count; i++){@b@	                 pl.incr("testKey2");@b@	            }@b@	            pl.sync();@b@	        } catch (Exception e) {@b@	            e.printStackTrace();@b@	        }finally{@b@	            if(jr!=null){@b@	                jr.disconnect();@b@	            }@b@	@b@	        }@b@	@b@	}@b@	 @b@    public static void main(String[] args) {@b@        int count = 100000;@b@        long start = System.currentTimeMillis();@b@        unusedPipeline(count);@b@        long end = System.currentTimeMillis();@b@        System.out.println("无Pipeline情况: " + (end-start));@b@@b@        start = System.currentTimeMillis();@b@        usedPipeline(count);@b@        end = System.currentTimeMillis();@b@        System.out.println("有Pipeline情况: " + (end-start));@b@@b@    }@b@    @b@@b@}

控制台答应结果如下

无Pipeline情况: 26553@b@有Pipeline情况: 296