NAME
    AnyEvent::Memcached - AnyEvent memcached client

VERSION
    Version 0.02

NOTICE
    Interface is stabilized. Some features could be rewritten in future with
    minor changes.

    Documentation is incomplete yet, look at tests, examples, sources for
    now ;)

SYNOPSIS
        use AnyEvent::Memcached;

        my $memd = AnyEvent::Memcached->new(
        servers => [ "10.0.0.15:11211", "10.0.0.15:11212" ], # same as in Cache::Memcached
        debug   => 1,
        compress_threshold => 10000,
        namespace => 'my-namespace:',

        cv      => $cv, # AnyEvent->condvar: group callback
        );

        $memd->set_servers([ "10.0.0.15:11211", "10.0.0.15:11212" ]);

        # Basic methods are like in Cache::Memcached, but with additional cb => sub { ... };
        # first argument to cb is return value, second is the error(s)

        $memd->set( key => $value, cb => sub {
        shift or warn "Set failed: @_"
        } );

        $memd->get( 'key', cb => sub {
        my ($value,$err) = shift;
        $err and return warn "Get failed: @_";
        warn "Value for key is $value";
        } );

        $memd->mget( [ 'key1', 'key2' ], cb => sub {
        my ($values,$err) = shift;
        $err and return warn "Get failed: @_";
        warn "Value for key1 is $values->{key1} and value for key2 is $values->{key2}"
        } );

        # Additionally there is rget (see memcachedb-1.2.1-beta)

        $memd->rget( 'fromkey', 'tokey', cb => sub {
        my ($value,$err) = shift;
        $err and warn "Get failed: @_";
        } );

METHODS
  new %args
    Currently supported options:

    servers =item namespace =item debug =item cv =item compress_threshold
    =item compress_enable =item timeout =item noreply
        If true, additional connection will established for noreply
        commands. Beware, feature is under development and may be unstable

  set_servers
        Setup server list

  connect
        Establish connection to all servers and invoke event C<connected>, when ready

  set( $key, $value, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    Unconditionally sets a key to a given value in the memcache.

    $rc is

    '1' Successfully stored

    '0' Item was not stored

    undef
        Error happens, see $err

  add( $key, $value, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    Like "set", but only stores in memcache if the key doesn't already
    exist.

  replace( $key, $value, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    Like "set", but only stores in memcache if the key already exists. The
    opposite of add.

  append( $key, $value, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    Append the $value to the current value on the server under the $key.

    append command first appeared in memcached 1.2.4.

  prepend( $key, $value, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    Prepend the $value to the current value on the server under the $key.

    prepend command first appeared in memcached 1.2.4.

  get( $key, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    Retrieve the value for a $key. $key should be a scalar

  mget( $keys : ARRAYREF, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    NOT IMPLEMENTED YET

    Retrieve the values for a $keys.

  get_multi : Alias for mget.
    NOT IMPLEMENTED YET

  gets( $keys : ARRAYREF, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )
    Retrieve the value and its CAS for a $key. $key should be a scalar.

    NOT IMPLEMENTED YET

  delete( $key, [cv => $cv], [ noreply => 1 ], cb => $cb->( $rc, $err ) )
    Delete $key and its value from the cache.

    If "noreply" is true, cb doesn't required

  del
    Alias for "delete"

  remove
    Alias for "delete"

  incr( $key, $increment, [cv => $cv], [ noreply => 1 ], cb => $cb->( $rc, $err ) )
    Increment the value for the $key by $delta. Starting with memcached
    1.3.3 $key should be set to a number or the command will fail. Note that
    the server doesn't check for overflow.

    If "noreply" is true, cb doesn't required, and if passed, simply called
    with rc = 1

    Similar to DBI, zero is returned as "0E0", and evaluates to true in a
    boolean context.

  decr( $key, $decrement, [cv => $cv], [ noreply => 1 ], cb => $cb->( $rc, $err ) )
    Opposite to "incr"

  rget( $from, $till, [ max => 100 ], [ '+left' => 1 ], [ '+right' => 1 ], [cv => $cv], cb => $cb->( $rc, $err ) )
    Memcachedb 1.2.1-beta implements rget method, that allows to look
    through the whole storage

    $from
        the starting key

    $till
        finishing key

    +left
        If true, then starting key will be included in results. true by
        default

    +right
        If true, then finishing key will be included in results. true by
        default

    max Maximum number of results to fetch. 100 is the maximum and is the
        default

  destroy
    Shutdown object as much, as possible, incl cleaning of incapsulated
    objects

BUGS
    Since there is developer release, there may be a lot of bugs

    Feature requests are welcome

    Bug reports are welcome

AUTHOR
    Mons Anderson, "<mons at cpan.org>"

COPYRIGHT & LICENSE
    Copyright 2009 Mons Anderson, all rights reserved.

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