redis的管道就是可以在给redis服务端发送了一个命令后,不用等待该命令执行返回,而继续发送下一个命令。最终将结果一起返回给客户端,这样可以显著提供响应时间,测试例子如下:
@Test
public void test() {
Jedis jedis = new Jedis("localhost");
jedis.auth("123");
//不使用管道的测试
long start = System.currentTimeMillis();
for(int i=0; i<100000; i++) {
jedis.lpush("key", ""+i);
}
long end = System.currentTimeMillis();
System.out.println(end-start);
jedis.flushAll();
<span style="white-space:pre"> </span>//使用管道的测试
long start2 = System.currentTimeMillis();
Pipeline pipeline = jedis.pipelined();
for(int i=0; i<100000; i++) {
pipeline.lpush("key", ""+i);
}
List<Object> list = pipeline.syncAndReturnAll();
long end2 = System.currentTimeMillis();
System.out.println(end2-start2);
jedis.flushAll();
jedis.disconnect();
8368
243
很显然,可以发现,使用管道比不适用的效率提高了很多