PHP中Redis管道

Redis是一个TCP服务器,支持请求/响应协议。 在Redis中,请求通过以下步骤完成:

客户端向服务器发送查询,并从套接字读取,通常以阻塞的方式,用于服务器响应。
服务器处理命令并将响应发送回客户端。
如果需要一次执行多个redis命令,以往的方式需要发送多次命令请求,有redis服务器依次执行,并返回结果,

为了解决此类问题,设计者设计出了redis管道命令:

客户端可以向服务器发送多个请求,而不必等待回复,并最终在一个步骤中读取回复,从而大大增加了协议性能
代码示例:

redis版本是

<?php
$redis = new Redis();
$redis->connect('127.0.0.1', 6379);
$pipe = $redis->multi(Redis::PIPELINE);
for ($i = 0; $i < 3; $i++) {
    $key = "key::{$i}";
    print_r($pipe->set($key, str_pad($i, 2, '0', 0)));
    echo PHP_EOL;
    print_r($pipe->get($key));
    echo PHP_EOL;
}
$result = $pipe->exec();
print_r($result);
参数说明:
Redis::MULTI或Redis::PIPELINE. 默认是 Redis::MULTI
Redis::MULTI:将多个操作当成一个事务执行
Redis::PIPELINE:让(多条)执行命令简单的,更加快速的发送给服务器,但是没有任何原子性的保证

结果如下图,可以看出每次执行set/get命令,并没有被redis服务器立即执行,执行结果被放在了最后的result中


--------------------- 
作者:陌上青苔 
来源:CSDN 
原文:https://blog.csdn.net/weijianfengyu/article/details/62891813?utm_source=copy 
版权声明:本文为博主原创文章,转载请附上博文链接!

来源:https://blog.csdn.net/weijianfengyu/article/details/62891813

猜你喜欢

转载自blog.csdn.net/gb4215287/article/details/83111117
今日推荐