douzao5487 2014-12-02 06:06
浏览 51

PHP + Redis中的实际流水线操作,而不是批处理

There's a lot of information on "pipelining" in PHP+Redis on the web. However, When you actually start looking at the examples, not a single one of them does actual pipelining. All they do is batch processing. As examples, let's take Predis ->pipeline() (https://github.com/nrk/predis) and Phpredis ->multi() (https://github.com/nicolasff/phpredis). They basically suspend execution of commands and instead collect the commands into a buffer, then execute them as a batch when calling ->execute() / ->exec() later.

Disadvantages: - has to allocate a command buffer that can grow large for many commands - needs a round-trip to the server once for every batch of commands

The behaviour I would expect from pipelining mode is: Start sending commands as soon as I pass them to the client, not buffer them. Return before the response for a command has arrived. Allow to send more and more commands while the previous ones are "in flight". Once in a while, collect responses from the client that have arrived, without waiting for responses that have not yet arrived.

The strange thing is that the examples actually pass constants to the client that are called "pipelining", yet they describe the behaviour as batch processing.

Big question: How can you actually put those clients into pipelining mode?

  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥15 关于#python#的问题:求帮写python代码
    • ¥20 MATLAB画图图形出现上下震荡的线条
    • ¥15 LiBeAs的带隙等于0.997eV,计算阴离子的N和P
    • ¥15 关于#windows#的问题:怎么用WIN 11系统的电脑 克隆WIN NT3.51-4.0系统的硬盘
    • ¥15 来真人,不要ai!matlab有关常微分方程的问题求解决,
    • ¥15 perl MISA分析p3_in脚本出错
    • ¥15 k8s部署jupyterlab,jupyterlab保存不了文件
    • ¥15 ubuntu虚拟机打包apk错误
    • ¥199 rust编程架构设计的方案 有偿
    • ¥15 回答4f系统的像差计算