Pipline大量提高了批量写入redis的效率
直接上代码使用spring测试
配置类
@Bean
public JedisPoolConfig JedisPoolConfig() {
JedisPoolConfig config = new JedisPoolConfig();
config.setMaxTotal(1000);
config.setMaxIdle(25);
config.setMaxWaitMillis(10 * 1000);
config.setTestOnBorrow(true);
config.setTestWhileIdle(true);
config.setBlockWhenExhausted(false);
return config;
}
@Bean
public ShardedJedis shardedJedis(JedisPoolConfig config) {
JedisShardInfo info1 = new JedisShardInfo("192.168.139.128", 7007);
ShardedJedisPool pool = new ShardedJedisPool(config, Arrays.asList(info1));
return pool.getResource();
}
测试
@Test
public void test2() {
ShardedJedis jedis = (ShardedJedis)applicationContext.getBean("shardedJedis");
ShardedJedisPipeline pipeline = jedis.pipelined();
long begin = System.currentTimeMillis();
for(int i = 0;i<count;i++){
pipeline.set("key_"+i,"value_"+i);
}
pipeline.sync();
jedis.close();
System.out.println("usePipeline total time:" + (System.currentTimeMillis() - begin));
}
@Test
public void useNormal(){
ShardedJedis jedis = (ShardedJedis)applicationContext.getBean("shardedJedis");
long begin = System.currentTimeMillis();
for(int i = 0;i<count;i++){
jedis.set("kkey_"+i,"vvalue_"+i);
}
jedis.close();
System.out.println("useNormal total time:" + (System.currentTimeMillis() - begin));
}
运行结果:使用Pipline的时间为79毫秒 不适用的时间为2037毫秒