/**
* @param $data
* @throws Exception
*/
public function redisMultiPipeline($data)
{
//实例化redis
$redis = new Redis();
//连接
$redis->connect(Configure::read('redis.cache.host'), Configure::read('redis.cache.port'));
if (!is_null(Configure::read('redis.cache.password'))) {
$redis->auth(Configure::read('redis.cache.password'));
}
$redis->select(Configure::read('redis.cache.database'));
$redis->pipeline(); //开启管道
if (!$redis) {
throw new Exception('redis连接失败!', 1);
}
$redis->setOption(Redis::OPT_PREFIX, 'CPU_TASK:'); //管道数据批量设置前缀
foreach ($data as $key => $datum) {
$redis->set($key, $datum); //循环set值,都将被塞进管道中
}
$redis->exec(); //客户端提交数据到Redis处理,1次网络耗时加n次命令耗时
$redis->close();
}
//注释:如果不开启管道,循环set redis数据,那么是n次网络耗时加n次命令耗时,这样网络耗时就增加了。