|
NAMEAnyEvent::Memcached - AnyEvent memcached clientSYNOPSISuse 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:', # May use another hashing algo: hasher => 'AnyEvent::Memcached::Hash::WithNext', 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: @_" } ); # Single get $memd->get( 'key', cb => sub { my ($value,$err) = shift; $err and return warn "Get failed: @_"; warn "Value for key is $value"; } ); # Multi-get $memd->get( [ '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 ($values,$err) = shift; $err and warn "Get failed: @_"; while (my ($key,$value) = each %$values) { # ... } } ); # Rget with sorted responce values $memd->rget( 'fromkey', 'tokey', rv => 'array' cb => sub { my ($values,$err) = shift; $err and warn "Get failed: @_"; for (0 .. $#values/2) { my ($key,$value) = @$values[$_*2,$_*2+1]; } } ); DESCRIPTIONAsyncronous "memcached/memcachedb" client for AnyEvent frameworkNOTICEThere is a notices in Cache::Memcached::AnyEvent related to this module. They all has been fixed
In general, this module follows the spirit of AnyEvent rather than correspondence to Cache::Memcached interface. METHODSnew %argsCurrently supported options:
set_serversSetup server list connectEstablish 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
cas( $key, $cas, $value, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )$memd->gets($key, cb => sub { my $value = shift; unless (@_) { # No errors my ($cas,$val) = @$value; # Change your value in $val $memd->cas( $key, $cas, $value, cb => sub { my $rc = shift; if ($rc) { # stored } else { # ... } }); } }) $rc is the same, as for "set" Store the $value on the server under the $key, but only if CAS value associated with this key is equal to $cas. See also "gets" 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 scalarget( $keys : ARRAYREF, [cv => $cv], [ expire => $expire ], cb => $cb->( $values_hash, $err ) )Retrieve the values for a $keys. Return a hash with keys/valuesgets( $key, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )Retrieve the value and its CAS for a $key. $key should be a scalar.$rc is a reference to an array [$cas, $value], or nothing for non-existent key gets( $keys : ARRAYREF, [cv => $cv], [ expire => $expire ], cb => $cb->( $rc, $err ) )Retrieve the values and their CAS for a $keys.$rc is a hash reference with $rc->{$key} is a reference to an array [$cas, $value] 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 delAlias for "delete"removeAlias 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], [ rv => 'array' ], cb => $cb->( $rc, $err ) )Memcachedb 1.2.1-beta implements rget method, that allows to look through the whole storage
incadd ( $key, $increment, [cv => $cv], [ noreply => 1 ], cb => $cb->( $rc, $err ) )Increment key, and if it not exists, add it with initial value. If add fails, try again to incr or faildestroyShutdown object as much, as possible, incl cleaning of incapsulated objectsBUGSFeature requests are welcomeBug reports are welcome AUTHORMons Anderson, "<mons at cpan.org>"COPYRIGHT & LICENSECopyright 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.
Visit the GSP FreeBSD Man Page Interface. |