我想在填充数据库时利用客户端流水线。如何使用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;
答案 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部分中说:
警告:这些命令与流水线相结合时的行为仍在讨论中,您现在不应该同时使用它们。