我想在填充数据库时利用客户端流水线。如何使用Perl Redis客户端实现此目的?
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;
该文档说,您需要添加coderef作为的第三个参数set
。
要使用流水线,请将coderef参数添加为命令方法调用的最后一个参数
那将使您的示例变为:
for my $i (1 .. 20000) {
$redis->set("key.$i" => "foo" x500, sub {});
}
实际上,您可以对回复进行处理,而不是使用空的子项:
一旦响应可用,就会调用您提供给流水线命令方法的coderef。它有两个参数,$ reply和$ error。如果定义了$ error,则它包含Redis服务器发送的错误回复的文本。否则,$ reply是非错误答复。对于几乎所有命令,这都意味着它是undef,或者是已定义但未引用的标量,或者是其中任何一个的数组引用;但请参见“键”,“信息”和“ exec”。
它还在文档的事务处理部分中说:
警告:这些命令与流水线结合使用时的行为仍在讨论中,您不应立即同时使用它们。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句