Redis Pipeline 阅读简记

一、Pipeline相关概念简介

    概念1、Round Trip Time(RTT-往返时间):
    Redis客户端执行一条命令分为如下四个过程:
    (1)发送命令、(2)命令排队、(3)命令执行、(4)返回结果
    其中(1)+(4)称为Round Trip Time

    概念2、Redis批量操作命令:
    Redis提供了批量操作命令(例如mget、mset等),有效地节约RTT。但大部分
    命令是不支持批量操作的,例如要执行n次hgetall命令,并没有mhgetall命令存在,需要消耗n次RTT
    
    概念3、Pipeline(流水线)机制:
    它能将一组Redis命令进行组装,通过一次RTT传输给Redis服务端,再将这组Redis命令的执行结果按顺序
    返回给客户端。
    
二、原生批量命令与Pipeline的对比

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

三、Pipeline的局限性

    1、一次Pipeline只能操作一个Redis实例,即Pipeline操作的key必须分布在同一个Redis Node上
    (集群部署时需要注意,必要时需要添加hash_tag解决)
    
    2、每次Pipeline组装的命令个数不能没有节制,否则一次组装Pipeline数据量过大,
    一方面会增加客户端的等待时间,另一方面会造成一定的网络阻塞。
    具体一次Pipeline合适的操作命令个数与返回的数据大小(占用Socket缓冲区)有较大关系,受限于server的物理内存或网络接口的缓冲能力。
    
    
四、Pipeline的推荐使用场景:

    Pipeline在某些场景下非常有用,比如有多个command需要被“及时的”提交,而且他们对“相应结果没有互相依赖”,
    对“结果响应”也无需立即获得,那么pipeline就可以充当这种“批处理”的工具;
    而且在一定程度上,可以较大的提升性能,性能提升的原因主要是TCP连接中减少了“交互往返”的时间。
 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值