Perl Project Improvement(2)Redis and Multi-Threads and Error Handler for System

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

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=326833477&siteId=291194637