前言
Redis的性能是很好的,但是仍然有其性能上限.Redis提供了Pipline功能,可以在某些场景下极大的提升qps.
为什么需要pipline
先介绍两个概念:Request/Response protocols
和 RTT
.
Redis是一个使用TCP进行通讯的C/S架构,也被叫做请求/响应协议
.
也就是说在redis处理一条命令的时候,需要:
- 客户端将请求发送至服务器,然后阻塞(一般情况下)地等待响应.
- 服务器处理请求并且将结果返回至客户端.
可以发现在这个过程中有两个信息的发送事件,这个事件叫做RTT(Round Trip Time).pipline主要节省的就是rtt时间.
使用pipline的性能测试
我们使用的客户端为Jedis,分别进行10000
,100000
次操作,邮箱变量有本地redis以及远程redis(因为远程通信的网络延迟一般也是避免不了的).测试结果如下:
times | 不使用pipline | 使用pipline |
---|---|---|
本地10000 | 406ms | 38ms |
本地100000 | 3557ms | 131ms |
远程10000 | 43641ms | 76ms |
远程100000 | 388632ms | 3433ms |
从实验结果可以看出,RTT占用的时间是非常大的,远远比redis本身处理命令占用的时间更多.因此在提升性能的时候,我们应该首先节省RTT时间.
测试代码如下:
1 | public static void main(String[] args) { |
参考文章
完。
ChangeLog
2019-06-13 完成以上皆为个人所思所得,如有错误欢迎评论区指正。
欢迎转载,烦请署名并保留原文链接。
更多学习笔记见个人博客——>呼延十