Redis中PipeLine使用(一)

(一)简介 
Redis客户端与Redis之间使用TCP协议进行连接,一个客户端可以通过一个socket连接发起多个请求命令。每个请求命令发出后client通常会阻塞并等待redis服务处理,redis处理完后请求命令后会将结果通过响应报文返回给client,因此当执行多条命令的时候都需要等待上一条命令执行完毕才能执行,如:get ‘0’,get ‘1’,get ‘2’

这里写图片描述

其执行过程如下图所示:

这里写图片描述

而管道(pipeline)可以一次性发送多条命令并在执行完后一次性将结果返回,pipeline通过减少客户端与redis的通信次数来实现降低往返延时时间,其过程如下图所示 
这里写图片描述

(二)普通方式与pipeline的比较

1.测试环境: 
redis版本2.4.15 
jedis版本2.2.1

2.测试代码 
分别向redis中插入100、500、1000、2000、5000、10000数据

  long start=System.currentTimeMillis();
        for (int i = 0; i <50000; i++) {
            redis.set(String.valueOf(i),String.valueOf(i));
        }
        long end=System.currentTimeMillis();
        logger.info("the total time is:"+(end-start));

        Pipeline pipe=redis.pipelined();
        long start_pipe=System.currentTimeMillis();
        for (int i = 0; i <50000; i++) {
            pipe.set(String.valueOf(i),String.valueOf(i));
        }
        pipe.sync();
        long end_pipe=System.currentTimeMillis();
        logger.info("the pipe total time is:"+(end_pipe-start_pipe));


测试结果对比: 

这里写图片描述

阅读更多
个人分类: REDIS
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

Redis中PipeLine使用(一)

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭