Redis:03-管道

客户端和Redis使用TCP协议连接。不论是客户端向Redis发生命令还是Redis向客户端返回命令的执行结果,都需要经过网络传输,这两个部分的总耗时称往返时延。如果执行较多的命令,每个命令的往返时延累加起来对性能还是有一定影响的。在执行多个命令时每条命令都需要等待上一条命令执行完(即收到Redis的返回结果)才能执行,即使命令不需要上一条命令的执行结果,如下图:

Redis的底层通信协议对管道(pipelining)提供了支持。通过管道可以一次性发送多条命令并在执行完后一次性将结果返回,如下图;

管道压力测试

Redis自带了一个压力测试工具 redis-benchmark 使用这个工具就可以进行管道测试。首先我们对一个普通的set指令进行压测,QPS大约5w/s

> redis-benchmark -t set -q
SET: 51975.05 requests per second

我们加入管道选项 -P参数,它表示单个管道内并行的请求数量,看下面 p=2 ,QPS 达到了 9w/s。

> redis-benchmark -t set -P 2 -q
SET: 91240.88 requests per second

再看看 P=3,QPS 达到了 10w/s。 SET: 102354.15 requests per second

但如果再继续提升 P 参数,发现 QPS 已经上不去了。这是为什么呢? 因为这里 CPU 处理能力已经达到了瓶颈,Redis 的单线程 CPU 已经飙到了 100%,所以无法再继续提升了

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章