在讲解管道前,我们首先来了解一下redis的交互,redis的一次交互是由客户端发起,由服务端接收,那么我们连续操作一些指令,如下图所示:
客户端请求一个指令到服务器到服务器返回数据这个过程非常复杂,既要保证数据能够快速传到也要保证不丢包,那么每次请求响应这个过程中数据传输和客户端接收数据的网络消耗非常大,那么我们怎么来提升这个性能呢?
上面说了,我们来回几次消耗大,那么可以一次性请求,一次性接收吗?当然是可以的,redis可以利用管道来提高性能。
Redis客户端与服务器之间使用TCP协议进行通信,并且很早就支持管道(pipelining)技术了。Redis 管道 (Pipeline) 本身并不是 Redis 服务器直接提供的技术,这个技术本质上是由客户端提供的,跟服务器没有什么直接的关系。
这里值得注意的是,管道空间也有上限,合理利用才是最好的选择。
管道压力测试
接下来我们测试一下管道的性能,Redis自带了一个压力测试工具redis-benchmark,使用这个