__PACKAGE__->mk_accessors(
qw/storage prefix expires/
);
sub
increment {
my
(
$self
) =
@_
;
my
$last_value
=
$self
->storage->get_and_set(
$self
->_tail_name,
sub
{
$_
[1] = (
$_
[1] || 0 ) + 1 }
);
$self
->storage->set(
$self
->_item_name(
$last_value
) =>
time
+
$self
->expires,
$self
->expires );
return
1;
}
sub
clear {
my
(
$self
) =
@_
;
return
$self
->storage->remove(
$self
->_tail_name );
}
sub
get_item {
my
$self
=
shift
;
my
$item
=
shift
;
return
$self
->storage->get(
$self
->_item_name(
$item
) );
}
sub
_last_number {
my
$self
=
shift
;
return
$self
->storage->get(
$self
->_tail_name );
}
sub
_tail_name {
my
$self
=
shift
;
return
$self
->prefix .
"_end"
;
}
sub
_item_name {
my
$self
=
shift
;
my
$item
=
shift
;
return
$self
->prefix .
"_$item"
;
}
1;