数据库
首页 > 数据库> > redis pipline与multi

redis pipline与multi

作者:互联网

<?php

$redis = new Redis;

$redis->pconnect("127.0.0.1",6379);

//pipline 模式  不保证原子性
$pipline = $redis->multi(Redis::PIPELINE);

//使用redis操作  这里的操作实际上是把命令记录到客户端缓冲中
$pipline->set("a",1);
$pipline->set("b",2);
$pipline->set("c",3);
$pipline->set("d",4);
$pipline->set("e",5);
$pipline->del('b');

//执行  一次性发送命令到服务器  所以等于1次网络开销
$pipline->exec();

//multi 模式
$pipline = $redis->multi();//这里默认是multi模式 所以不传参即可

//使用redis操作  这里的操作会把命令一个个的传送到服务端  可以理解为放进一个事务块的队列里
$pipline->set("f",1);
$pipline->set("g",2);
$pipline->set("h",3);
$pipline->set("j",4);
$pipline->set("k",5);
$pipline->del('k');

//执行  之前记录的事务块里所有命令  但是因为之前发送的原因 其实是有5次网络开销
$pipline->exec();

$redis->close();

/**
 * 摘抄一段 如何做选择
 * Redis::MULTI方式会将命令逐条发给redis服务端。只有在需要使用事务时才选择Redis::MULTI方式,它可以保证发给redis的一系列命令以原子方式执行。但效率相应也是最低的。
 * Redis::PIPELINE方式,可以将一系列命令打包发给redis服务端。如果只是为了一下执行多条redis命令,无需事物和原子性,那么应该选用Redis::PIPELINE方式。代码的性能会有大幅度提升!
 */

 

标签:multi,set,redis,Redis,命令,pipline
来源: https://www.cnblogs.com/tudou1223/p/13666981.html