前言
先来看看Redis客户端和服务端的交互模型
可以得出:
1.Redis是基于一个Request,一个Response的同步请求服务
2.客户端将数据包发送至服务器,然后服务器再将响应数据发送回客户端,这都需要花费一定时间的。这段时间被称为往返时间RTT(Round Trip Time)。
当一个客户端需要连续执行很多请求时,就很容易看出往返时间是影响系统性能的
例如:如果往返时间RTT是250毫秒,即使Redis服务器每秒钟能处理1000个请求,我们也只能每秒钟最多处理四个请求。
Redis提供了一种Pipeline(管道)方法可以改善上述用例的性能,下面看看。
Redis Pipeline交互模型
可以看到,客户端首先将执行的命令写入到缓冲区(内存)中,最后再一次性发送 Redis。
pipeline通过将一批命令进行打包,然后发送给服务器,服务器执行完按顺序打包返回,这样就减少了频繁交互往返的时间,提升了性能
基本使用
Pipeline pipeline =jedis.pipelined();
// 循环添加 1000个元素
for(int i = 0; i < 1000; i++){
pipeline.rpush("rediskey", i + "");
}
//执行
pipeline.sync()
复制代码
使用起来还是很简单的
Pipeline的本质
我们深入分析一个请求交互的流程,真实的情况是它很复杂的