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

本文介绍了一个使用Perl进行Redis操作的示例项目,包括连接Redis、执行基本命令如HSET、SPOP等,以及多线程数据库操作和系统错误处理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值