package Resque::Stat;
# ABSTRACT: The stat subsystem. Used to keep track of integer counts.
$Resque::Stat::VERSION = '0.42';
use Moose;
has resque => (
is => 'ro',
required => 1,
handles => [qw/ redis key /]
);
sub get {
my ($self, $stat) = @_;
$self->redis->get( $self->key( stat => $stat ) ) || 0;
}
sub set {
my ($self, $stat, $value) = @_;
$self->redis->set( $self->key( stat => $stat ), ($value||0)+0 );
}
sub incr {
my ( $self, $stat, $by ) = @_;
$by ||= 1;
$self->redis->incrby( $self->key( stat => $stat ), $by );
}
sub decr {
my ( $self, $stat, $by ) = @_;
$by ||= 1;
$self->redis->decrby( $self->key( stat => $stat ), $by );
}
sub clear {
my ( $self, $stat ) = @_;
$self->redis->del( $self->key( stat => $stat ) );
}
__PACKAGE__->meta->make_immutable();
__END__
=pod
=encoding UTF-8
=head1 NAME
Resque::Stat - The stat subsystem. Used to keep track of integer counts.
=head1 VERSION
version 0.42
=head1 ATTRIBUTES
=head2 resque
=head1 METHODS
=head2 get
Returns the int value of a stat, given a string stat name.
my $value = $resque_stat->get( 'stat_name' );
=head2 set
Set the int value of a a given stat name.
$resque_stat->set( stat_name => 5 );
=head2 incr
For a string stat name, increments the stat by one.
Can optionally accept a second int parameter. The stat is then
incremented by that amount.
my $value = $resque_stat->incr( 'stat_name', $optional_inc_by );
=head2 decr
For a string stat name, decrements the stat by one.
Can optionally accept a second int parameter. The stat is then
decremented by that amount.
my $value = $resque_stat->decr( 'stat_name', $optional_dec_by );
=head2 clear
Removes a stat from Redis, effectively setting it to 0.
$resque_stat->clear( 'stat_name' );
=head1 AUTHOR
Diego Kuperman <diego@freekeylabs.com>
=head1 COPYRIGHT AND LICENSE
This software is copyright (c) 2021 by Diego Kuperman.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.
=cut