Cache-Memcached-AnyEvent

 view release on metacpan or  search on metacpan

README.md  view on Meta::CPAN


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](https://metacpan.org/pod/AnyEvent) memcached client, [AnyEvent::Memcached](https://metacpan.org/pod/AnyEvent::Memcached) which is perfectly fine, and I have nothing against you using that module. I just have som...

- Prerequisites

    This module, [Cache::Memcached::AnyEvent](https://metacpan.org/pod/Cache::Memcached::AnyEvent), requires the bare minimum prerequisites to install. [AnyEvent::Memcached](https://metacpan.org/pod/AnyEvent::Memcached) requires AnyEvent::Connection ...

- Binary Protocol

    I was in the mood to implement the binary protocol. I don't believe it's a requirement to do anything, so this is purely a whim. There's nothing that requires binary protocol in the wild, so it has no practactical advantages. I just wanted to imp...

- Cache::Memcached Interface

    In general, this module follows the interface of Cache::Memcached.

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 do...

# 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) 

- auto\_reconnect => $max\_attempts

    Set to 0 to disable auto-reconnecting

- compress\_threshold => $number
- selector => $object

    The selector is an object responsible for selecting the appropriate
    Memcached server to store a particular key. This object MUST implement
    the following methods:

        $object->set_server( @servernames );
        my $handle = $object->get_handle( $key );

    By default if this argument is not specified, a selector object will
    automatically be created using the value of the `selector_class`
    argument.

- selector\_class => $class\_name\_or\_fragment

    Specifies the selector class to be instantiated. The default value is "Traditional".

    If the class name is preceded by a single '+', then that class name with the
    '+' removed will be used as the class name. Otherwise, the prefix
    "Cache::Memcached::AnyEvent::Selector::" will be added to the value
    ("Traditional" would be transformed to "Cache::Memcached::AnyEvent::Selector::Traditional")

- namespace => $namespace
- procotol => $object

    The protocol is an object responsible for handling the actual talking to
    the memcached servers. This object MUST implement all of the memcached
    interface supported by Cache::Memcached::AnyEvent

    By default if this argument is not specified, a protocol object will
    automatically be created using the value of the `protocol_class`
    argument.

- protocol\_class => $classname

    Specifies the protocol class to be instantiated. The default value is "Text".

    If the class name is preceded by a single '+', then that class name with the
    '+' removed will be used as the class name. Otherwise, the prefix
    "Cache::Memcached::AnyEvent::Protocol::" will be added to the value
    ("Text" would be transformed to "Cache::Memcached::AnyEvent::Protocol::Text")

- reconnect\_delay => $seconds

    Amount of time to wait between reconnect attempts

- servers => \\@servers

    List of servers to use.

`%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()



( run in 0.887 second using v1.01-cache-2.11-cpan-364913b4093 )