Redis流水线

时间:2014-03-03 09:17:27

标签: perl redis

我想在填充数据库时利用客户端流水线。如何使用perl Redis client实现此目的?

use Redis;

my $redis = Redis->new or die "No redis server";

$redis->multi;
for my $i (1 .. 20000) {

  $redis->set("key.$i" => "foo" x500);
}
$redis->exec;

1 个答案:

答案 0 :(得分:1)

documentation表示您需要将coderef添加为set的第三个参数。

  

要使用流水线操作,请将coderef参数添加为命令方法调用的最后一个参数

这会把你的例子变成:

for my $i (1 .. 20000) {
  $redis->set("key.$i" => "foo" x500, sub {});
}

而不是空子,你可以实际回答:

  

调用您提供给流水线命令方法的coderef一次   响应可用。它需要两个参数,$ reply和$ error。   如果定义了$ error,则它包含由其发送的错误回复的文本   Redis服务器。否则,$ reply是非错误回复。几乎   所有命令,这意味着它是undef,或定义但非引用   标量,或任何这些的数组引用;但请参阅“键”,“信息”和   “EXEC”。

它还在文档的transaction handling部分中说:

  

警告:这些命令与流水线相结合时的行为仍在讨论中,您现在不应该同时使用它们。