【redis】pipeline

1.pipeline的概念

redis客户端执行一条命令分为四个部分。
(1)发送命令 
(2)命令排队 
(3)命令执行 
(4)返回结果 

(1)+(4)=RTT,往返时间。
redis提供了批量操作命令(mget,mset),有效节约RTT。但是大部分命令是不支持
批量操作的。pipiline(流水线)机制能改善上面这类问题。它能将一组redis命令进行
组装,通过一次RTT传输给redis,再将这组redis命令的执行结果按顺序返回给客户端。

pipeline并不是什么新技术或者机制,很多技术上都使用过。而且RTT在不同网络环境
下会有不同,例如同机房机器会比较快,跨机房地区会比较慢。
redis命令真正执行的时间通常在微妙级别,所以才会有redis性能瓶颈是网络这样说法。
redis-cli --pipe 就是使用pipeline的机制。
目前大部分redis客户端都支持pipeline; 

2.性能测试 

在不同网络环境下非pipeline和pipeline执行10000次set操作的结果。
pipeline执行速度一般比逐条执行要快。
客户端和服务端的网络延时越大,pipeline的效果越明显。

3.原生批量命令与Pipeline对比

原生批量命令是原子的,pipeline是非原子的。
原生批量命令是一个命令对应多个key,pipeline时支持多个命令。
原生批量命令是redis服务端支持实现的,而pipeline需要服务端和客户端共同实现。

4.最佳实践 

pipeline虽然好用,但是每次pipeline组装的命令个数不能没有节制,否则一次组装
pipeline数据量过大,一方面会增加客户端的等待时间,另一方面造成一定的网络阻塞,
可以将一次包含大量命令的pipeline拆分成多次较小的pipeline来完成。

pipe只能操作一个redis实例,但是即使在分布式redis场景中,也可以作为批量操作
的重要优化手段。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值