zoukankan      html  css  js  c++  java
  • 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();
    
        }
    
    }

    用时:

  • 相关阅读:
    基于范围的for循环
    ML.NET技术研究系列-2聚类算法KMeans
    SQLServer常用运维SQL整理
    ML.NET技术研究系列-1入门篇
    Kafka基本知识整理
    .NetCore技术研究-EntityFramework Core 3.0 Preview
    容器技术研究-Kubernetes基本概念
    特来电混沌工程实践-混沌事件注入
    .Net Core技术研究-Span<T>和ValueTuple<T>
    Visual Studio Git本地Repos和GitHub远程Repos互操作
  • 原文地址:https://www.cnblogs.com/lw-20171224/p/13994612.html
Copyright © 2011-2022 走看看