在phpredis中的multi()调用中的每个调用是否会导致新的网络往返redis?

时间:2011-03-12 04:25:19

标签: redis

在phpredis(php中的redis的c客户端)中,有一个'管道'调用和一个'多'调用。从文档中,“管道”调用清楚地表明管道中的所有查询都将排队并一次性发送到redis。但是,从文档中不清楚phpredis中的multi()调用中的所有查询是否也排队并一次性全部发送到redis,或者如果multi()中的每个调用将导致通过网络单独往返到redis服务器。

所以,问题是,phpredis中的multi()调用(而不是管道调用)中的每个调用是否会导致新的网络往返redis?

2 个答案:

答案 0 :(得分:3)

不幸的是,目前没有办法在多个/ exec块中管道调用,所以它是流水线或原子的。

multi()exec()之间的每次通话都是单独发送的。

答案 1 :(得分:-1)

phpredis函数“multi()”仅使用一次网络往返。您可以通过将Redis :: MULTI用于原子并将Redis :: PIPELINE用于非原子(复合?)来指定是否要将整个事务设置为原子事务。如果未指定,则默认为Reis :: MULTI。这些都在文档here中。