redis的pipeline(管道)功能在命令行中沒有,但redis是支持pipeline的,而且在各個語言版的client中都有相應的實現。 由於網絡開銷延遲,即算redis server端有很強的處理能力,也由於收到的client消息少,而造成吞吐量小。當client 使用pipelining 發送命令時,redis server必須部分請求放到隊列中(使用內存)執行完畢後壹次性發送結果;如果發送的命名很多的話,建議對返回的結果加標簽,當然這也會增加使用的內存;
Pipeline在某些場景下非常有用,比如有多個command需要被“及時的”提交,而且他們對相應結果沒有互相依賴,而且對結果響應也無需立即獲得,那麽pipeline就可以充當這種“批處理”的工具;而且在壹定程度上,可以較大的提升性能,性能提升的原因主要是TCP鏈接中較少了“交互往返”的時間。不過在編碼時請註意,pipeline期間將“獨占”鏈接,此期間將不能進行非“管道”類型的其他操作,直到pipeline關閉;如果妳的pipeline的指令集很龐大,為了不幹擾鏈接中的其他操作,妳可以為pipeline操作新建Client鏈接,讓pipeline和其他正常操作分離在2個client中。不過pipeline事實上所能容忍的操作個數,和socket-output緩沖區大小/返回結果的數據尺寸都有很大的關系;同時也意味著每個redis-server同時所能支撐的pipeline鏈接的個數,也是有限的,這將受限於server的物理內存或網絡接口的緩沖能力。