Perl Project Improvement(2)Redis and Multi-Threads and Error Handler for System
1 Redis Command and Knowledge
Always open this URL for references of all the command
http://redis.io/commands
Here is how we connect and execute some command
> cd ~/tool/redis-stable/
> src/redis-cli -h stage-sillycat-002.sillycat.amazonaws.com -p 6379
Operation on hash value on Redis
> hset source_11 in_process 1
> hget source_11 in_process
> hdel source_11 in_process
I am using these for Redis
use strict;
use warnings;
use Redis;
package lib::RedisClientHandler;
sub init {
my $configService = &loadService('configService');
my $logger = &loadLogger();
my $host = $configService->{redisHost};
my $port = $configService->{redisPort};
$logger->debug("init Redis connection-----");
$logger->debug("host = " . $host);
$logger->debug("port = " . $port);
$logger->debug("--------------------------");
my $redis = Redis->new(server => $host . ":" . $port);
$logger->debug("RedisSerivce init success " . + $redis);
my $register = IOC::Registry->instance();
my $container = $register->getRegisteredContainer('JobsProducer');
$container->register(IOC::Service->new('redisService'
=> sub { $redis }));
return 1;
}
I am using set in Redis
sub popTask {
die "Wrong arguments" if @_ != 1;
#services
my $logger = &loadLogger();
my $redisService = &loadService('redisService');
#params
my $key = $_[0];
my $task = $redisService->spop($key);
return $task;
}
sub pushTask {
die "Wrong arguments" if @_ != 2;
#services
my $logger = &loadLogger();
my $redisService = &loadService('redisService');
#params
my $key = $_[0];
my $task = $_[1];
$redisService->sadd($key, $task);
return 1;
}
sub checkTask {
die "Wrong arguments" if @_ != 2;
#services
my $logger = &loadLogger();
my $redisService = &loadService('redisService');
#params
my $key = $_[0];
my $task = $_[1];
return $redisService->sismember($key, $task);
}
Directly use integer there as well
sub incrCount {
die "Wrong arguments" if @_ != 1;
#services
my $logger = &loadLogger();
my $redisService = &loadService('redisService');
#parmas
my $key = $_[0];
$redisService->incr($key);
return 1;
}
sub delCount {
die "Wrong arguments" if @_ != 1;
my $logger = &loadLogger();
my $redisService = &loadService('redisService');
my $key = $_[0];
$redisService->del($key);
return 1;
}
sub getCount {
die "Wrong arguments" if @_ != 1;
#services
my $logger = &loadLogger();
my $redisService = &loadService('redisService');
#params
my $key = $_[0];
return $redisService->get($key);
}
Multiple Thread DBIx
http://search.cpan.org/~darnold/DBIx-Threaded-0.10/lib/DBIx/Threaded.pm
http://search.cpan.org/~dwheeler/DBIx-Connector-0.53/lib/DBIx/Connector.pm
cpan DBIx::Connector
Multiple Thread is using as well, and then I switched my mysql driver.
use threads;
use threads::shared;
use Time::Piece;
use strict;
use warnings;
use DBI;
use Data::Dumper;
use DBIx::Connector;
Error Handler for System
http://affy.blogspot.com/p5be/ch13.htm
http://www.perlmonks.org/?node_id=486200
http://perldoc.perl.org/functions/system.html
References:
http://search.cpan.org/~dwheeler/DBIx-Connector-0.53/lib/DBIx/Connector.pm
Perl Project Improvement(2)Redis and Multi-Threads and Error Handler for System
Guess you like
Origin http://10.200.1.11:23101/article/api/json?id=326833477&siteId=291194637
Recommended
Ranking