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需要处理完所有命令之后再返回客户端结果,因此在这之前,需要在内存中缓存已处理完命令的结果,所以并不是打包的命令越多越好

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值