EV-Memcached
view release on metacpan or search on metacpan
Connection
host => $str
port => $int (default 11211)
TCP host and port. Mutually exclusive with "path".
path => $str
Unix socket path. Mutually exclusive with "host".
loop => $ev_loop
EV loop to attach to. Default: "EV::default_loop".
priority => $num (-2 to +2)
EV watcher priority. Higher = serviced before other EV watchers.
keepalive => $seconds
TCP keepalive idle time. Set to 0 to disable. Ignored on Unix
sockets.
Timeouts and flow control
connect_timeout => $ms
Abort an in-progress non-blocking connect after this many
milliseconds. 0 = no timeout (default). Applies to any connect that
does not complete immediately (including unix sockets under rare
kernel backlog conditions); immediately-completing connects finish
on the next event loop iteration without arming this timer.
command_timeout => $ms
Disconnect with "command timeout" error if no response arrives
within this interval. The timer resets on every response from the
server. 0 = no timeout (default).
max_pending => $num
Cap on concurrent in-flight commands. Excess commands are held in a
local waiting queue. 0 = unlimited (default).
waiting_timeout => $ms
Maximum time a command may sit in the waiting queue before its
callback fires with "waiting timeout". 0 = unlimited (default).
resume_waiting_on_reconnect => $bool
If true, the waiting queue survives a disconnect and is replayed on
reconnect. Default: false.
Reconnect
reconnect => $bool
Enable automatic reconnection on transport errors.
reconnect_delay => $ms (default 1000)
Delay before each reconnect attempt. The delay is always honored via
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). Pre-connect commands
sit in the waiting queue until SASL completes. 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
if you need to terminate.
on_connect => $cb->()
Fires once the connection is fully established (after SASL, when
applicable; on SASL auth failure it never fires). Always delivered
from the event loop -- never synchronously from "new" / "connect" /
"connect_unix" -- so a handler installed right after the constructor
still fires.
on_disconnect => $cb->()
Fires after a disconnect, after pending callbacks have been
cancelled. For server-initiated close, this fires before "on_error".
LIFECYCLE
connect($host, [$port])
Connect to a TCP host. Port defaults to 11211. Stops any pending
auto-reconnect timer and clears any prior "path" setting.
connect_unix($path)
Connect via Unix domain socket. Stops any pending auto-reconnect timer
and clears any prior "host" setting.
disconnect
Disconnect cleanly. Cancels any pending reconnect, drains pending
command callbacks with "(undef, "disconnected")", then fires
"on_disconnect". For an intentional disconnect, "on_error" does not fire
-- that distinction lets you tell user-initiated teardown from
server-side close.
is_connected
Returns true while a session is established or in progress (TCP
handshake / SASL exchange). Commands issued in the connecting phase are
queued and sent on completion.
quit([$cb])
Send a memcached "QUIT" and let the server close the connection. Treated
as an intentional disconnect: "on_disconnect" fires when the server
closes, but "on_error" does not, and auto-reconnect is suppressed.
STORAGE COMMANDS
Each command's callback receives "($result, $err)". $result is 1 on
success.
set($key, $value, [$expiry, [$flags,]] [$cb])
Store unconditionally. Without $cb this becomes fire-and-forget (SETQ):
no response is received and any server-side failure is silently dropped.
add($key, $value, [$expiry, [$flags,]] [$cb])
Store only if the key does not exist. Errors with "EXISTS" if present
(the server may append a message, e.g. "EXISTS: Data exists for key.").
( run in 0.602 second using v1.01-cache-2.11-cpan-5c0b1e786e0 )