Redis——》Pipeline 我就是我 2024-03-24 23:20 81阅读 0赞 > 推荐链接: > [总结——》【Java】][Java] > [总结——》【Mysql】][Mysql] > [总结——》【Redis】][Redis] > [总结——》【Kafka】][Kafka] > [总结——》【Spring】][Spring] > [总结——》【SpringBoot】][SpringBoot] > [总结——》【MyBatis、MyBatis-Plus】][MyBatis_MyBatis-Plus] > [总结——》【Linux】][Linux] > [总结——》【MongoDB】][MongoDB] > [总结——》【Elasticsearch】][Elasticsearch] #### 文章名称 #### * 一、概念 * 二、作用 * 三、特点 * 四、过程图 * * 1、没有使用Pipeline执行n条命令,整个过程需要n次RTT * 2、使用Pipeline 执行了n条命令,整个过程需要1次RTT * 五、代码示例 * 六、其它 * * 1、Pipeline组装的命令个数要有限制 * 2、Pipeline只能操作一个Redis实例 > 参考链接:[Redis——》RTT][Redis_RTT] > > 1. **支持批量**操作的命令(mget、mset),可以有效地节约RTT。 > 2. **不支持批量**操作的命令(执行n次 hgetall),需要消耗n次RTT。 ## 一、概念 ## Pipeline = 流水线 Pipeline将一组 Redis命令进行组装,通过一次RTT传输给Redis,再将这组Redis命令的执行结果按顺序返回给客户端。 ## 二、作用 ## 有效地节约RTT往返时间。 ## 三、特点 ## 1. Pipeline执行速度一般比逐条执行要快。 2. 客户端和服务端的网络延时越大,Pipeline的效果越明显。 ## 四、过程图 ## ### 1、没有使用Pipeline执行n条命令,整个过程需要n次RTT ### ![没有使用Pipeline执行n条命令,整个过程需要n次RTT][Pipeline_n_n_RTT] ### 2、使用Pipeline 执行了n条命令,整个过程需要1次RTT ### ![在这里插入图片描述][03d540e314c94fb5ab60e911fa716f61.png] ## 五、代码示例 ## > linux使用Pipeline机制:redis-cli的–pipe选项 ## 六、其它 ## ### 1、Pipeline组装的命令个数要有限制 ### > **Q:一次组装Pipeline数据量过大,会有什么影响,以及如何解决?** > A: > 影响:一方面会增加客户端的**等待时间**,另一方面会造成一定的**网络阻塞**。 > 解决:将一次包含大量命令的Pipeline**拆分成多次较小的Pipeline来完成**。 > 方案1:将Pipeline的总发送大小控制在内核输入输出缓冲区大小之内。 > 方案2:控制在单个TCP 报文最大值1460字节之内。 > > > **Q:内核输入输出缓冲区大小?** > A:一般是4K-8K,不同操作系统会不同(当然也可以配置修改) > > > **Q:单个TCP 报文最大值1460?** > A:MTU = Maximum Transmission Unit = 最大传输单元,在以太网中最大值是1500字节 > 因为IP头占20字节,TCP头占20字节,所以单个TCP 报文最大值是1460 ### 2、Pipeline只能操作一个Redis实例 ### 即使在分布式Redis场景中,也可以作为批量操作的重要优化手段。 [Java]: https://blog.csdn.net/weixin_43453386/article/details/84788317 [Mysql]: https://blog.csdn.net/weixin_43453386/article/details/88667709 [Redis]: https://blog.csdn.net/weixin_43453386/article/details/127966762 [Kafka]: https://blog.csdn.net/weixin_43453386/article/details/128189472 [Spring]: https://blog.csdn.net/weixin_43453386/article/details/124900806 [SpringBoot]: https://blog.csdn.net/weixin_43453386/article/details/84788714 [MyBatis_MyBatis-Plus]: https://blog.csdn.net/weixin_43453386/article/details/84788053 [Linux]: https://blog.csdn.net/weixin_43453386/article/details/89241912 [MongoDB]: https://blog.csdn.net/weixin_43453386/article/details/84788450 [Elasticsearch]: https://blog.csdn.net/weixin_43453386/article/details/108583782 [Redis_RTT]: https://blog.csdn.net/weixin_43453386/article/details/132566289 [Pipeline_n_n_RTT]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/13/d176576ea5764e44a79562ec5aad5b1d.png [03d540e314c94fb5ab60e911fa716f61.png]: https://image.dandelioncloud.cn/pgy_files/images/2024/03/13/64c06c834973493bb8807f670c63e0a6.png
还没有评论,来说两句吧...