Cache-Memcached-AnyEvent
view release on metacpan or search on metacpan
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 )