Redis 客户端执行一条命令经历以下四个过程:
- 发送命令
- 命令排队
- 命令执行
- 返回结果
从 1 到 4 算一个 RTT(Round Trip Time,表示往返时间),Redis 提供了批量操作命令如 mget、mset 等,但大部分命令是不支持批量操作的。Pipeline(流水线)机制能将多条命令进行组装,用一次 RTT 完成执行。
Pipeline 与原生批量命令的比较:
- 原生批量命令具有原子性,Pipeline 不具有原子性
- 原生批量命令由 Redis 服务端单独实现,Pipeline 需要服务端和客户端共同实现