hi,你好!欢迎访问本站!登录
本站由网站地图腾讯云宝塔系统阿里云强势驱动
当前位置:首页 - 教程 - 杂谈 - 正文 君子好学,自强不息!

怎样用好redis pipeline

2019-11-18杂谈搜奇网45°c
A+ A-

编者注:pipeline是Redis的一个进步吞吐量的机制,适用于多key读写场景,比方同时读取多个key的value,或许更新多个key的value。事情过程当中发明挺多小伙伴都对pipeline若干有些相识,然则更深切的明白或许说有哪些坑就不知道了,下面我们就一同剖析下redis pipeline机制,揭开它的神奇面纱。

Redis自身是基于Request/Response协定(停等机制)的,一般情况下,客户端发送一个敕令,守候Redis返回效果,Redis吸收到敕令,处置惩罚后相应。在这类情况下,假如同时须要实行大批的敕令,那就是守候上一条敕令应对后再实行,这中心不单单议多了RTT(Round Time Trip),而且还频仍挪用体系IO,发送收集要求。为了提拔效力,这时候pipeline涌现了,它许可客户端可以一次发送多条敕令,而不守候上一条敕令实行的效果,这和收集的Nagel算法有点像(TCP_NODELAY选项)。pipeline不仅减少了RTT,同时也减少了IO挪用次数(IO挪用涉及到用户态到内核态之间的切换)

要支撑Pipeline,实在既要服务端的支撑,也要客户端支撑。关于服务端来讲,所须要的是可以处置惩罚一个客户端经由过程同一个TCP衔接发来的多个敕令,可以明白为,这里将多个敕令切分,和处置惩罚单个敕令一样(之前陈词滥调的黏包征象),Redis就是如许处置惩罚的。而客户端,则是要将多个敕令缓存起来,缓冲区满了或许到达发送前提就发送出去,末了才处置惩罚Redis的应对。


注重:Redis的Pipeline和Transaction(Redis事件)差别,Transaction会存储客户端的敕令,末了一次性实行,而Pipeline则是处置惩罚一条(批次),相应一条,从两者的差别处置惩罚机制来看,Redis事件中敕令的实行是原子的(注重,个中一部分敕令涌现毛病后续敕令会继承实行,这里的原子说的是敕令实行是完全的,中心不会被其他Redis敕令所打断),而pipeline中敕令的实行不一定是原子的。然则这里却有一点差别,就是pipeline机制中,客户端并不会挪用read去读取socket内里的缓冲数据(除非已发完pipeline中所有敕令),这也就造成了,假如Redis应对的数据填满了该吸收缓冲(SO_RECVBUF),那末客户端会经由过程ACK,WIN=0(吸收窗口)来掌握服务端不能再发送数据,那模样,数据就会缓冲在Redis的客户端应对缓冲区内里。所以须要注重掌握Pipeline的大小。如下图:


这里可以想象一下,假如客户端经由过程ACK,WIN=0(吸收窗口)来掌握服务端不能再发送数据,那末数据就会堆积在服务端socket发送缓冲区中,假如服务端socket发送缓冲区也满了,那末此时服务端挪用write(socket)就会壅塞或许失利。

既然提到了tcp/ip的滑动窗口观点,这里就简朴总结下滑动窗口:

滑动窗口在TCP中的作用是供应TCP的可靠性和流控特征,滑动窗口可分为发送窗口和吸收窗口,它们离别对应于发送缓冲区和吸收缓冲区。发送窗口的大小是依据客户端吸收缓冲区的大小而设定的(三次握手的目标是衔接服务器指定端口,竖立 TCP 衔接,并同步衔接两边的序列号和确认号,交流 TCP 窗口大小信息)。

发送窗口中包括的内容是已发送但还未收到Ack的数据和未发送但对端许可发送的数据。


TCP吸收缓冲区中包括应用为读取数据、已吸收数据(已复兴ACK)、待吸收,个中待吸收空间可称为吸收窗口。

运用pipeline过程当中,要注重掌握一次pipeline中的敕令总大小,不能使相应效果撑爆socket吸收缓冲区。这里我们思索一个题目,另有没有其他体式格局进步pipeline的处置惩罚机能呢?理论上是有的,比方可以运用数据压缩机制,进一步减小数据传输的总大小,不过这须要客户端和服务端供应解压缩机制,同时会消耗一定量服务器CPU。

迎接小伙伴关注【TopCoder】浏览更多出色好文。

  选择打赏方式
微信赞助

打赏

QQ钱包

打赏

支付宝赞助

打赏

  移步手机端
怎样用好redis pipeline

1、打开你手机的二维码扫描APP
2、扫描左则的二维码
3、点击扫描获得的网址
4、可以在手机端阅读此文章
未定义标签

本文来源:搜奇网

本文地址:https://www.sou7.cn/282308.html

关注我们:微信搜索“搜奇网”添加我为好友

版权声明: 本文仅代表作者个人观点,与本站无关。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。请记住本站网址https://www.sou7.cn/搜奇网。

发表评论

选填

必填

必填

选填

请拖动滑块解锁
>>