1、简单描述
redis是一个CS模式的tcp的server,一个client发起了命令操作的请求,然后会阻塞等待服务端的处理和数据的返回。基本上一个命令请求就是2个报文,一去一回。如果多个命令,每次都是2个报文,这样网络传输的开销不小,在批量命令处理的时候,pipeline就可以减少这种网络开销而提升性能。假如client一个命令一个命令地发,一秒之内只能执行4个命令的,用了pipeline,一秒可以执行成千个甚至上万个命令。
2、具体操作(基于4.0.1版本)
1)pipeline命令:开启管道
2)exec命令:执行管道中的命令
3、小结
1)管道的优点是多个命令可以一次性发送到服务端,服务端处理完一次性再返回所有结果;
2)管道的缺点是如果命令太多,那么命令处理完的结果会先保存在服务端的缓存中然后再返回,会对服务端造成压力;
3)管道的命令不是原子操作,就是说命令执行中可能会穿插其他client的命令操作,如果对于命令的执行顺序有强烈要求的,可能pipeline不支持,可以改用mulit事务。
4)管道的性能比不用管道要高10倍以上。使用事务会比不使用慢一些。