Collection
view release on metacpan or search on metacpan
lib/Collection/Memcached.pm view on Meta::CPAN
package Collection::Memcached;
=head1 NAME
Collection::Memcached - class for collections of data, stored in Memcached.
=head1 SYNOPSIS
use Collection::Memcached;
use Cache::Memcached;
$memd = new Cache::Memcached {
'servers' => [ "127.0.0.1:11211" ],
'debug' => 0,
'compress_threshold' => 10_000,
};
$memd->set_compress_threshold(10_000);
$memd->enable_compress(0);
my $collection = new Collection::Memcached:: $memd;
...
my $collection_prefix = new Collection::Memcached:: $memd, 'prefix';
=head1 DESCRIPTION
Class for collections of data, stored in Memcached.
=head1 METHODS
=head2 new <memcached object>[, <prefix>]
Creates a new Collection::Memcached object. Keys transparently autoprefixed with <prefix> if provided.
my $collection_prefix = new Collection::Memcached:: $memd, 'prefix';
=cut
use Collection;
use Collection::Utl::Base;
use Data::Dumper;
use Collection::Utl::ActiveRecord;
use strict;
use warnings;
our @ISA = qw(Collection);
our $VERSION = '0.01';
attributes qw/ _mem_cache _ns /;
sub _init {
my $self = shift;
my $memd = shift || return undef;
if ( my $ns = shift ) {
$self->_ns($ns);
}
$self->_mem_cache($memd);
$self->SUPER::_init();
return 1;
}
sub _delete {
my $self = shift;
my @ids = @_;
my $memd = $self->_mem_cache;
my $ns = $self->_ns;
if ( defined $ns ) {
#auto prefix keys
foreach my $id (@ids) {
$id = $ns . $id;
}
}
$memd->delete($_) for @ids;
#return array of deleted
[@_];
}
sub _create {
my $self = shift;
my %to_save = @_;
my $memd = $self->_mem_cache;
my $ns = $self->_ns;
$ns = '' unless defined $ns;
my %res = ();
while ( my ( $key, $val ) = each %to_save ) {
$memd->set( $ns . $key, $val ) && $res{$key}++;
}
return \%res;
}
( run in 2.632 seconds using v1.01-cache-2.11-cpan-39bf76dae61 )