我使用Redis.pm尝试在perl中使用Redis管道,这是正确的方法吗?剪下以下代码:
...
my $redis = Redis->new(server => '127.0.0.1:6379', reconnect => 60);
foreach my $key (keys %hval) {
my $ok = $redis->zadd($key, $hval{ $key }, &process);
}
sub process {
my ($reply, $error) = @_;
my $cr = sub {
my ($r, $e) = @_;
if ($e) {
warn Dumper('Redis pipelining crapped out', $e);
{
}
}
你以前试过这个吗?我环顾四周但找不到合适的例子,请让我知道。我正在使用所有必需的模块,此代码仅适用于此处。实际代码比较复杂?提前谢谢。
答案 0 :(得分:3)
以下是一个例子:
use Redis;
my $redis = Redis->new(server => '127.0.0.1:6379', reconnect => 60);
my %hval = ( 'foo', 1, 'bar', 2, 'foobar', 3 );
foreach my $key (keys %hval) {
my $ok = $redis->zadd("myzset", $hval{ $key }, $key, sub {
my ($reply, $error) = @_;
print "Returned $reply with error = [$error]\n" ;
});
}
print "Waiting replies ...\n";
$redis->wait_all_responses;
请注意:
需要使用wait_all_responses子句与服务器建立同步点。
zadd按顺序需要3个参数(zset名称,分数,键)