Redis管道操作

在操作Redis是,执行多个命令,通过以下两个案例进行对比正常情况下和使用管道操作所用时间

案例1:(正常情况下)

package com.lx;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;

public class Demo5 {

    @Test
    public void test(){
        JedisPool pool = new JedisPool("127.0.0.1",6379);

        long l = System.currentTimeMillis();

        Jedis jedis = pool.getResource();

        for (int i = 0; i < 100000; i++) {
            jedis.incr("qq");
        }
        System.out.println("用时:"+(System.currentTimeMillis()-l)+"毫秒");
        jedis.close();

    }

}

用时:

 

 因为在操作Redis的时候,执行一个命令需要先发送请求到Redis服务器,这个过程需要经历网络的延迟,Redis还需要给客户端一个响应。
如果我需要一次性执行很多个命令,上述的方式效率很低,可以通过Redis的管道,先将命令放到客户端的一个Pipeline中,之后一次性的将全部命令都发送到Redis服务,Redis服务一次性的将全部的返回结果响应给客户端。

案例2:(通过管道)

package com.lx;

import org.junit.Test;
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPool;
import redis.clients.jedis.Pipeline;

public class Demo5 {


    @Test
    public void test2(){
        JedisPool pool = new JedisPool("127.0.0.1",6379);

        long l = System.currentTimeMillis();

        Jedis jedis = pool.getResource();

        Pipeline pipeline = jedis.pipelined();

        for (int i = 0; i < 100000; i++) {
            pipeline.incr("qq");
        }
        System.out.println("用时:"+(System.currentTimeMillis()-l)+"毫秒");
        jedis.close();

    }

}

用时:

 

posted @ 2020-11-17 15:48  LW_20171224  阅读(86)  评论(0编辑  收藏  举报