| Data-Valve documentation | Contained in the Data-Valve distribution. |
Data::Valve::BucketStore::Memcached - Memcached Backend
Data::Valve::BucketStore::Memcached uses Memcached as its storage backend, and allows multiple processes to work together.
You need to specify a memcached server in order for t to work:
Data::Valve->new(
bucket_store => {
module => "Memcached",
args => {
store => {
servers => [ '127.0.0.1:11211' ],
namespace => ...
}
}
}
);
This module also provides locking mechanism by means of KeyedMutex. You should specify one at construction time:
Data::Valve->new(
bucket_store => {
module => "Memcached",
args => {
mutex => {
args => {
sock => "host:port" # <-- here
}
}
}
}
);
This allows all coordinating processes to share the same mutex, and you will get "correct" throttling information
| Data-Valve documentation | Contained in the Data-Valve distribution. |
# $Id: /mirror/coderepos/lang/perl/Data-Valve/trunk/lib/Data/Valve/BucketStore/Memcached.pm 86989 2008-10-01T17:20:18.893695Z daisuke $ package Data::Valve::BucketStore::Memcached; use Moose; use Moose::Util::TypeConstraints; extends 'Data::Valve::BucketStore::Object'; subtype 'Data::Valve::BucketStore::Object::Memcached' => as 'Object' => where { my $h = $_; foreach my $class qw( Cache::Memcached Cache::Memcached::Fast Cache::Memcached::libmemcached ) { $h->isa($class) and return 1; } return (); } ; coerce 'Data::Valve::BucketStore::Object::Memcached' => from 'HashRef' => via { my $h = $_; my $module = $h->{module} || 'Cache::Memcached'; Class::MOP::load_class($module); $module->new($h->{args}); } ; has '+store' => ( isa => 'Data::Valve::BucketStore::Object::Memcached', coerce => 1, required => 1, default => sub { Class::MOP::load_class('Cache::Memcached'); Cache::Memcached->new({ servers => [ '127.0.0.1:11211' ] }); } ); __PACKAGE__->meta->make_immutable; no Moose; no Moose::Util::TypeConstraints; 1; __END__