Jedis管道使用

java客户端与redis服务器之间使用tcp协议进行通信,客户端向服务器每发送一条语句,就会阻塞等待结果,如果有多条命令,那么这个发送语句和等待结果的时间就比较长了。管道的作用就是将这多条语句打包一起发送给服务器,这样,无论有多少条语句,都只需要一次发送,一次等待的时间就可以了。先看代码。

Jedis jedis = new Jedis("192.168.229.128", 6379); 
// 开启管道
Pipeline pipelined = jedis.pipelined();
for(int i = 0; i < 100000; i++){
	pipelined.set(i + "", i + "");
}
// 提交命令
pipelined.sync();

可以看出,使用redis.clients.jedis.Pipeline的一个实例化的对象代替了redis.clients.jedis.Jedis,使用sync()方法发送语句并等待语句执行结果。

使用管道需要注意以下几点:

1. 每条命令都不能依赖于之前命令的执行结果

2. 如果中间某条命令执行失败,不影响之后命令的执行

3. 管道中的每条命令执行期间,可以有其他线程的命令插队执行,这点与redis的事物不一样

4.  由于redis需要处理完所有命令之后再返回客户端结果,因此在这之前,需要在内存中缓存已处理完命令的结果,所以并不是打包的命令越多越好

猜你喜欢

转载自blog.csdn.net/jia_costa/article/details/79034953