验证使用Redis的PipeLine前后性能对比

Posted 泡^泡

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了验证使用Redis的PipeLine前后性能对比相关的知识,希望对你有一定的参考价值。

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万次的结果

以上是关于验证使用Redis的PipeLine前后性能对比的主要内容,如果未能解决你的问题,请参考以下文章

redis使用管道pipeline提升批量操作性能(php演示)

redis性能提升之pipeline

redis大幅性能提升之使用管道(PipeLine)和批量(Batch)操作

Redis入门到高可用—— pipeline

redis管道命令pipeline的使用

HiKariCP和Druid对比使用整理自测