Redis之Pipeline
2018-10-07 本文已影响0人
煮茶boy
Pipeline: 管道,流水线
一条命令的生命周期有4个阶段: 发送命令->命令排队->命令执行->返回结果,其中发送命令和返回结果称为往返时间(RTT),有些Redis命令是没有批量操作,因此如果Redis客户端和Redis服务端的物理距离很大时,如果命令不能批量操作,会导致命令请求次数过多,并且在往返时间中花费过多导致Redis在单位时间内处理的命令数量减少过多,与Redis的高性能相违背.
Pipeline能改善上述问题,Redis将一组Redis命令进行组装,通过一次往返传递给Redis服务器,再将这组命令的执行结果按照顺序返回给客户端.
- redis-cli的--pipe选项实际上就是使用Pipeline机制将命令组装.
- 目前大部分高级语言的Redis客户端都支持Pipeline
- Pipeline执行速度一般比逐条执行速度要快,客户端和服务端的网络延时越大,Pipeline效果越明显
原生批量命令和Pipeline的区别:
1. 原生批量命令是原子的,Pipeline是非原子的
2. 原生批量命令是一个命令对应多个键,Pipeline支持多个命令
3.原生批量命令是Redis服务端实现的,而Pipeline是Redis客户端和服务器端共同实现的
- Pipeline只能操作一个Redis实例