一、Pipeline概述
Redis客户端执行一条命令分为如下四个过程:
1.发送命令
2.命令排队
3.命令执行
4.返回结果
其中1+4称为Round Trip Time(RTT,往返时间)
Pipeline概述
Redis提供了批量操作命令(例如mget、mset等),有效地节约RTT。但大部分命令是不支持批量操作的,例如要执行n次hgetall命令,并没有 mhgetall命令存在,需要消耗n次RTT。Redis的客户端和服务端可能部署在不 同的机器上。例如客户端在北京,Redis服务端在上海,两地直线距离约为 1300公里,那么1次RTT时间=1300×2/(300000×2/3)=13毫秒(光在真空中 传输速度为每秒30万公里,这里假设光纤为光速的2/3),那么客户端在1秒内大约只能执行80次左右的命令,这个和Redis的高并发高吞吐特性背道而 驰
Pipeline(流水线)机制能改善上面这类问题,它能将一组Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端
下图为没有使用Pipeline执行了n条命令,整个过程需要n次 RTT