Dave Cross: Still Munging Data With Perl: Online event - Mar 27 Learn more

use 5.010;
use strict;
use RedisDB;
use Scalar::Util qw(blessed);
=head1 NAME
no_raise_error_1.pl
=head1 DESCRIPTION
This example shows how object with raise_error disabled returns error as
blessed reference when connection to server has failed.
=cut
my @servers;
my @queues;
for ( 1 .. 3 ) {
my $srv = Test::RedisDB->new;
push @servers, $srv;
my $redis = RedisDB->new(
host => "127.0.0.1",
port => $srv->{port},
raise_error => undef,
);
push @queues, $redis;
}
while (1) {
my $n = 0;
foreach my $redis (@queues) {
my $len;
$len = $redis->incr("error_test");
if ( blessed $len) {
say "Got an error: $len";
$servers[$n]->start if rand > 0.7;
}
else {
say "Server $n: $len";
# randomly stop server
$servers[$n]->stop if rand > 0.8;
}
$n++;
}
sleep(1);
}