EV-Memcached
view release on metacpan or search on metacpan
a timer; setting it to 0 still defers through the event loop (no
synchronous retry recursion).
max_reconnect_attempts => $num
Give up after this many consecutive failures and emit "max reconnect
attempts reached". 0 = unlimited (default).
Authentication
username => $str
password => $str
SASL PLAIN credentials. When both are set, the client authenticates
after every successful connect (and reconnect). Commands issued
before authentication completes sit in the waiting queue until SASL
finishes. Requires a memcached build with SASL support and the "-S"
flag.
Event handlers
on_error => $cb->($errstr)
Connection-level error callback. Default: write the message to
"STDERR" via "warn". Callbacks are run under "G_EVAL", so any "die"
in a custom handler is demoted to a warning -- use an explicit flag
eg/sasl_auth.pl view on Meta::CPAN
#!/usr/bin/env perl
use strict;
use warnings;
use EV::Memcached;
$| = 1;
# SASL PLAIN authentication example.
# Requires memcached started with: memcached -S -B binary
# And SASL credentials configured via saslpasswd2.
# Option 1: Auto-auth via constructor (recommended)
# Credentials are sent automatically on every connect/reconnect.
{
my $mc = EV::Memcached->new(
host => $ENV{MC_HOST} // '127.0.0.1',
port => $ENV{MC_PORT} // 11211,
username => $ENV{MC_USER} // 'testuser',
password => $ENV{MC_PASS} // 'testpass',
on_error => sub { warn "error: @_\n"; EV::break },
lib/EV/Memcached.pm view on Meta::CPAN
=back
=head3 Authentication
=over
=item username => $str
=item password => $str
SASL PLAIN credentials. When both are set, the client authenticates
after every successful connect (and reconnect). Commands issued
before authentication completes sit in the waiting queue until SASL
finishes. Requires a memcached build with SASL support and the C<-S>
flag.
=back
=head3 Event handlers
=over
t/07_sasl.t view on Meta::CPAN
unless ($port) {
# Try to auto-setup SASL memcached
my $saslpasswd = '/usr/sbin/saslpasswd2';
unless (-x $saslpasswd) {
plan skip_all => "saslpasswd2 not found (install sasl2-bin)";
}
my $dir = "/tmp/evmc_sasl_test_$$";
mkdir $dir, 0755;
# Create SASL credentials
open my $pw, '|-', "$saslpasswd -a memcached -c -f $dir/sasldb2 -p $user 2>/dev/null"
or plan skip_all => "cannot run saslpasswd2";
print $pw $pass;
close $pw;
unless (-f "$dir/sasldb2") {
system("rm -rf $dir");
plan skip_all => "saslpasswd2 failed to create db";
}
# SASL config
( run in 0.806 second using v1.01-cache-2.11-cpan-3f962061493 )