3

我尝试使用 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);
        {
    }
}

你以前试过这个吗?我环顾四周,但找不到任何合适的例子,请告诉我。我正在使用所有必需的模块,此代码仅用于此处。实际代码复杂得多?提前致谢。

4

1 回答 1

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 名称、分数、键)

于 2013-06-21T18:29:28.487 回答