redis 学习-10 pipeline及php中的pipeline
概念
redis执行一条命令分为四个过程
- 发送命令
- 命令排队
- 命令执行
- 返回结果
其中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)
}