redis 学习-10 pipeline及php中的pipeline

概念

redis执行一条命令分为四个过程

  1. 发送命令
  2. 命令排队
  3. 命令执行
  4. 返回结果

其中1和4称为Round Trip Time(RTT,往返时间)
pipeline的原理就是减少往返时间来提高速度,但是需要注意一点,如果pipeline中的命令过多,可能会导致阻塞redis,所以在使用pipeline时,需要把握好度,不然就得不偿失了

php中pipeline的用法

注意:以下实例全部是以Predis为基础来写的
需要注意下,不同命令的返回值是不一样的,需要区别对待

# 代码
$redisClient = new \Predis\Client('tcp://127.0.0.1:6379');

// 回调方式使用
$result = $redisClient->pipeline(function ($client){
    /* @var \Predis\Client $client */
    $client->set('commandA', 'aaa');
    $client->sadd('commandC', 'bbb');
});

// 接口形式调用
$result = $redisClient->pipeline()->set('commandA', 'aaa')
    ->sadd('commandC', 'bbb')
    ->execute();

var_dump($result);

# 输出
array(2) {
  [0] =>
  class Predis\Response\Status#12 (1) {
    private $payload =>
    string(2) "OK"
  }
  [1] =>
  int(0)
}

标签: redis

添加新评论