PipeLine是什么
PipeLine就是把一组命令组装在一起发送给Redis服务端执行,然后一次性获得返回结果。(客户端也是通过一个队列把所有的命令缓存起来,然后把多个命令在一次连接中发送给服务器。)其实和SQL的批量操作类似。
PipeLine测试代码
首先下载一个redis,这个案例是Jedis的,需要引入pom依赖。
<dependency>
<groupId>redis.clients</groupId>
<artifactId>jedis</artifactId>
<version>3.0.1</version>
</dependency>
package com.redisdemo;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.Pipeline;
public class PipelineTest {
public static void main(String[] args) {
int num = 1000000;
long start = System.currentTimeMillis();
unPipeLine(num);
long end = System.currentTimeMillis();
System.out.println("没有使用Pipeline的执行时间: " + (end-start));
start = System.currentTimeMillis();
usePipeLine(num);
end = System.currentTimeMillis();
System.out.println("使用Pipeline的执行时间: " + (end-start));
}
/**
* 没有使用PipeLine
*/
public static void unPipeLine(int num){
Jedis jedis = new Jedis("127.0.0.1",6379);
for(int i = 0; i <= num;i++){
jedis.set("unPipeLine:"+i,""+i);
}
jedis.disconnect();
}
/**
* 使用PipeLine
*/
public static void usePipeLine(int num){
Jedis jedis = new Jedis("127.0.0.1",6379);
Pipeline line = jedis.pipelined();
for(int i = 0; i <= num;i++){
line.set("usePipeLine:"+i,""+i);
}
line.sync();
jedis.disconnect();
}
}
执行结果
执行了100万次的结果