时间:2016.05.28 发布人:fangweijy
已解决问题
谷歌fangweijy用户在2016.05.28提交了关于“
柳传志redis pipeline 是做什么用的”的提问,欢迎大家涌跃发表自己的观点。目前共有1个回答,最后更新于2024-10-24T03:56:27。希望大家能够帮助她。
详细问题描述及疑问:期待您的答案,千言万语,表达不了我的感激之情,我已铭记在心
!
希望以下的回答,能够帮助你。
第1个回答
用户名:ck121来自8
Redis本身是一个cs模式的tcpserver,client可以通过一个socket连续发起多个请求命令。每个请求护千多错命令发出后client通常会阻塞并等待redis服务端处理,redis服务端处问答理完后将结果返回给client。
redis的pipeline(管道)功能在命令行中没有,但redis是支持pipeline的,企而且在各个语言版的清战落七弦急client中都有相应的实
现。由于网络开销延迟,即算redisserver端有很强的处理式持致友聚诗能力,也由于收到的client消息少,而造成吞吐量小。当client
使用pipelining发送命令时,redi冲增间任路举史今据逐s
server必须部分请求放到队列中(使用内存)执行完毕后一次性发送结果;如果发送的命名很多的话,建议对返回的结果加标签,当然这也会增加使用的内
存;
Pipeline在某些场景下非常有用,比如有多个command需要被“及时的”提交,而且他们对相应结果没有互相依赖,而且对结果响应也无需立即获
得,那么pipeli紧架固集左机己阻ne就可以充当这种“批处理”的工净而且在一定程度上,可以较大的提升性能,性能提升的原因主要是TCP链接中业屋富刑担组刻生较少了“交互往返”
的时间。不过在编码时请注意,pipel棉基夜第黑个圆业极极ine期间将“独占”链接,此期间将不能进行非“管道”类型的其他操作,直到pipeline低该观关闭;如果你的
pipeline的指令集很庞大,为了不干扰链接中的其他操作,你可以为pipeline操作新缩选套河采建Client链接,让pipeline和其他正常操作分
离在2个client中。不过pipeline事实上所能吸扩专容忍的操作个数,和socket-o火utput缓冲区大小/返回结果的**尺寸都有很大的关系;
同什意味着每个redis-server同时所能支撑的pipeline链接的个怎赵洋蛋数,也是有限的,这将受限于server的物理内存或网络接口的缓冲能
力。