Redis 管道技术

Redis 管道技术可以在服务端未响应时,客户端可以继续向服务端发送请求,并最终一次性读取所有服务端的响应。

操作方法

方法名称 参数 说明 备注
discardPipe 取消管道
execPipe 一次性发送命令
startPipe 管道开始记录

开始管道之后,操作命令都将返回"PIPE",直到取消管道或者执行,执行exec之后,将返回所有命令结果

管道开始后,所有命令调用之后并不会执行,而是会记录起来,然后等待exec的时候一次性发送给redis服务端 所以需要注意内存,一次管道不要执行过多的命令

集群目前不支持管道模式,将会出现错误

基本使用

go(function () {
    $redis = new \EasySwoole\Redis\Redis(new \EasySwoole\Redis\Config\RedisConfig([
        'host'      => '127.0.0.1',
        'port'      => '6379',
        'auth'      => 'easyswoole',
        'serialize' => \EasySwoole\Redis\Config\RedisConfig::SERIALIZE_NONE
    ]));;

    $redis->get('a');
    $data = $redis->startPipe();
    var_dump($data);
    $redis->del('ha');
    $data = $redis->hset('ha', "a", "a\r\nb\r\nc");
    var_dump($data);
    $data = $redis->hset('ha', 'b', '2');
    var_dump($data);
    $data = $redis->hset('ha', 'c', '3');
    var_dump($data);
    $data = $redis->hGetAll('ha');
    var_dump($data);
    $data = $redis->execPipe();

    var_dump($data);

    $redis->startPipe();
    $data = $redis->set("a", '1');
    var_dump($data);
    $data = $redis->discardPipe();
    var_dump($data);

});