redis管道

我们知道redis的客户端和服务器之间是通过TCP协议连接的,不论是客户端向redis发送命令还是客户端接收redis的执行结果,都需要网络通信,都需要一定时间,由于网络性能的不同往返时间也不同,大致的来说这个时间相当于redis处理一条简单命令(比如插入一个值到链表)的时间。如果我们执行较多的命令,一来一回,这个往返时间累加起来还是对性能有一定影响的。

由于redis是单线程,所以在执行多个命令时,都需要等待上一条命令执行完,才能执行下一条命令。因此,redis底层通信协议提供了对管道技术的支持。通过管道可以一次性发送多条命令并在执行完后一次性将结果返回,当一组命令中每条命令都不依赖于之前命令的执行结果时就可以将这组命令一起通过管道发出。管道通过减少客户端与Redis的通信次数来实现降低往返时延累计值的目的。redis管道的实现参考图:

redis管道