在perl中使用Redis.pm管道

时间:2013-06-20 21:58:56

标签: perl redis pipeline

我使用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);
        {
    }
}
你以前试过这个吗?我环顾四周但找不到合适的例子,请让我知道。我正在使用所有必需的模块,此代码仅适用于此处。实际代码比较复杂?提前谢谢。

1 个答案:

答案 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名称,分数,键)