`
sillycat
  • 浏览: 2539030 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

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
分享到:
评论

相关推荐

    redis-stack-server 7.2.0 安装包合集

    redis-stack-server-7.2.0-v9.arm64.snap redis-stack-server-7.2.0-v9.bionic.arm64.tar.gz redis-stack-server-7.2.0-v9.bionic.x86_64.tar.gz redis-stack-server-7.2.0-v9.bullseye.x86_64.tar.gz redis-stack-...

    redis-5.0.14-1.el7.remi.x86-64.rpm安装包(含有部署手册)

    redis-5.0.14-1.el7.remi.x86_64.rpm安装包(含有部署手册) redis-5.0.14-1.el7.remi.x86_64.rpm安装包(含有部署手册) redis-5.0.14-1.el7.remi.x86_64.rpm安装包(含有部署手册) redis-5.0.14-1.el7.remi.x86_64.rpm...

    redis校验工具redis-full-check

    **Redis 全面检查工具:redis-full-check** Redis 是一款高性能的键值存储系统,广泛应用于缓存、数据库和消息中间件等场景。在实际应用中,为了确保 Redis 的稳定性和数据一致性,需要定期对 Redis 实例进行健康...

    tomcat-redis-session-manager for tomcat8.5

    压缩文件包括tomcat-redis-session-manager-master-2.0.0.jar、jedis-2.7.3.jar、commons-pool2-2.3.jar三个jar包使用方法请参照https://github.com/jcoleman/tomcat-redis-session-manager。apache-tomcat-8.5.33....

    tomcat-redis-session-manager的jar包-包含Tomcat7和Tomcat8

    《深入理解Tomcat-Redis-Session-Manager:在Tomcat7和Tomcat8中的应用》 在现代Web应用程序开发中,session管理是一个至关重要的环节,它涉及到用户会话的持久化和跨请求的数据共享。传统的session管理方式在高...

    tomcat-redis-session-manager

    `tomcat-redis-session-manager`就是这样一款解决方案,它将Tomcat的session管理与Redis相结合,实现了跨服务器的session共享。 首先,让我们理解`tomcat-redis-session-manager`的核心概念。这是一个开源项目,它...

    redis-7.2-x64-for-windows-bin.zip

    这个压缩包"redis-7.2-x64-for-windows-bin.zip"是Redis 7.2版本的64位Windows构建,包含了运行Redis服务所需的所有组件。 1. **Redis 7.2**: Redis是一个开源的内存数据结构存储系统,它可以用作数据库、缓存和...

    redis-py-cluster-1.3.5.tar.gz

    而`redis-py-cluster`是Python连接Redis集群的一个库,它允许Python开发者方便地与Redis集群进行交互。`redis-py-cluster-1.3.5.tar.gz`这个压缩包文件包含了该库的源代码和相关资源,版本号为1.3.5。 首先,让我们...

    redis-desktop-manager-0.9.8 for mac and windows

    标题提及的是"redis-desktop-manager-0.9.8 for mac and windows",这意味着该资源包含了适用于Mac OS和Windows操作系统的Redis Desktop Manager 0.9.8版本。Redis Desktop Manager在0.9.4版本之后,官方停止了对...

    tomcat-redis-session-manager-master-2.0.0

    tomcat-redis-session-manager-2.0.0.jar jedis-2.5.2.jar commons-pool2-2.2.jar 2.修改 conf 目录下的 context.xml 文件 host="localhost" port="6379" database="0" maxInactiveInterval="60" /> ...

    Redis-7.0.5-x64 for Windows 64位版 Redis 7.0.5

    8. **redis-check-aof.exe**: 类似于redis-check-rdb,但专门用于检查AOF(Append Only File)持久化文件的完整性。AOF是另一种持久化方式,记录所有改变数据库状态的操作,保证数据的完整性和一致性。 9. **redis-...

    redis-desktop-manager-0.9.9 for Windows

    "redis-desktop-manager-0.9.9 for Windows" 是一个专门为Windows用户设计的图形化界面工具,帮助用户更直观、便捷地管理和操作Redis数据库。 Redis Desktop Manager是一款功能强大的Redis客户端,其0.9.9版本为...

    redis+redis-desktop-manager-0.8.3.3850+笔记

    2. 解压:`tar -zxvf redis-2.8.13.tar.gz` 3. 编译:`cd redis-2.8.13`,然后`make` 4. 安装:`sudo make install` 5. 启动Redis服务:`src/redis-server` 6. 配置:可以通过修改`redis.conf`来配置Redis服务,例如...

    redis++使用说明,windows下编译redis-plus-plus

    "Redis++使用说明,windows下编译Redis-Plus-Plus" 在这篇文章中,我们将详细介绍如何在Windows平台下编译Redis++,包括编译hiredis.lib和Win32_Interop.lib静态库文件的过程,然后安装Cmake并编译Redis++,最后...

    Redis-7.0.4-x64 for Windows 64位版 Redis 7.0.4

    Redis-7.0.4-x64 for Windows 64位版 Redis 7.0.4 基于最新版的redis 7.0.4源码编译而成

    redis-5.0.7-x64-for-windows-bin.rar

    redis-5.0.7-x64-for-windows编译-bin.rar Redis 是一个高性能的key-value数据库。 redis的出现,很大程度补偿了memcached这类keyvalue存储的不足,在部 分场合可以对关系数据库起到很好的补充作用。它提供了Python...

    redis-windows-7.2.4.zip

    - 解压"redis-windows-7.2.4.zip",找到`redis-server.exe`启动文件。 - 运行`redis-server.exe`,默认情况下,Redis监听6379端口。 - 可以通过配置文件`redis.windows.conf`修改默认设置,如端口、内存限制、...

    tomcat-redis-session-manager jar包

    【标题】"tomcat-redis-session-manager jar包"是一个用于集成Redis进行Session管理的Java库,特别设计用于Apache Tomcat服务器。这个库使得在多台Tomcat服务器之间共享和协调用户的Session数据成为可能,从而提高了...

    redis-windows-7.0.10.zip

    Redis的核心组件包括`redis-server.exe`(服务器进程)、`redis-cli.exe`(命令行客户端)以及`redis-benchmark.exe`(性能测试工具)等。用户需要通过`redis-server.exe`启动服务,并通过`redis-cli.exe`进行交互式...

    tomcat-redis-session-manager-2.0.0.jar

    tomcat-redis-session-manager的jar包,适用tomcat7版本。jar构建来自GitHub上开源项目打包

Global site tag (gtag.js) - Google Analytics