NAME

Cache::Memcached::AnyEvent - AnyEvent Compatible Memcached Client

SYNOPSIS

use Cache::Memcached::AnyEvent;

my $memd = Cache::Memcached::AnyEvent->new({
    servers => [ '127.0.0.1:11211' ],
    compress_threshold => 10_000,
    namespace => 'myapp.',
});

$memd->get( $key, sub {
    my ($value) = @_;
    warn "got $value for $key";
});

$memd->disconnect();

# use ketama algorithm instead of the traditional one
my $memd = Cache::Memcached::AnyEvent->new({
    ...
    selector_class => 'Ketama',
    # or, selector => $object 
});

# use binary protocol instead of text
my $memd = Cache::Memcached::AnyEvent->new({
    ...
    protocol_class => 'Binary',
    # or, protocol => $object,
});

DESRIPTION

WARNING: BETA QUALITY CODE!

This module implements the memcached protocol as a AnyEvent consumer, and it implments both for text and binary protocols.

RATIONALE

There's another alternative AnyEvent memcached client, AnyEvent::Memcached which is perfectly fine, and I have nothing against you using that module. I just have some specific itches to scratch:

So choose according to your needs. If you for some reason don't want AnyEvent::Connection and Object::Event, want a binary protocol, and like to stick with Cache::Memcached interface (relatively speaking), then use this module. Otherwise, read the docs for each module, and choose the one that fits your needs.

METHODS

All methods interacting with a memcached server which can take a callback function can also take a condvar instead. For example,

$memd->get( "foo", sub {
    my $value = shift;
} );

is equivalent to

my $cv = AE::cv {
    my $value = $_[0]->recv;
};
$memd->get( "foo", $cv );
# optionally, call $cv->recv here.

new(%args)

%args can also be a hashref.

auto_reconnect([$bool]);

Get/Set auto_reconnect flag.

add($key, $value[, $exptime, $noreply], $cb->($rc))

add_server( $host_port )

append($key, $value, $cb->($rc))

connect()

Explicitly connects to each server given. You DO NOT need to call this explicitly.

decr($key, $delta[, $initial], $cb->($value))

delete($key, $cb->($rc))

disconnect()

flush_all()

get($key, $cb->($value))

get_handle( $host_port )

get_multi(\@keys, $cb->(\%values));

incr($key, $delta[, $initial], $cb->($value))

prepend($key, $value, $cb->($rc));

protocol($object)

replace($key, $value[, $exptime, $noreply], $cb->($rc))

remove($key, $cb->($rc))

Alias to delete

servers()

set($key, $value[, $exptime, $noreply], $cb->($rc))

stats($cmd, $cb->(\%stats))

version( $cb->(\%result) )

TODO

CONTRIBUTING

Contribution is welcome, but please make sure to follow this guideline:

So to summarize, contribution is welcome, but please don't be stupid. If you can't follow the guideline, you will not be taken seriously.

AUTHOR

Daisuke Maki <daisuke@endeworks.jp>

LICENSE

This program is free software; you can redistribute it and/or modify it under the same terms as Perl itself.

See http://www.perl.com/perl/misc/Artistic.html