Library for memcached protocol
Author: Kevin Rosenberg kevin@rosenberg.net, based on the
cl-memcached library by Abhijit 'quasi' Rao and
Chaitanya Gupta .
Date Started: July 1, 2011
This package is based on the cl-memcached library. It is
substantially modified for use with the
memstore library. The primary areas of
additional functionality are:
Support for flags field with get and set functions. This is required as memstore stores bit flags denoting how the data is serialized. That information is required to deserialize the data.
Support for additional memcached functionality, such as
the gets command for retrieving CAS identifiers. The CAS
unique ID is used for the added :cas storage command.
Other storage commands newly supported are :append and
:prepend.
All communication now uses mc-send-command function with
transparently supports writing strings with write-byte.
This allows usocket to be used on other Lisp implementations
besides AllegroCL. Because cl-memcached used write-string
with usocket-stream, only AllegroCL was supported.
By sending all data as (unsigned-byte 8), all Lisp implementions
supported by usocket are now supported with memcached.
Encapsulated reading and writing to socket stream to avoid handling \#return characters in high-level code.
Changes to support the change in statistics fields with membase.
Some fields were no longer present. Also, membase 1.7 has
187 statistics fields versus the 20 fields supported in
cl-memcached. New function mc-get-stat allows to retrieving
any statistics field by name.
More robust print-object functions to avoid errors if fields
in statistics are not present.
Removed compatibility functions in compat.lisp by using the
kmrcl library to provide those
functions as well as utilitizing other kmrcl functions to simplify
code.
Added functions to support all memcached API commands,
such as flush_all and version.
Support for the moreply command argument accepted by
many commands.
Support the noreply argument that many API commands accept.
Write nearly the entire code base for improved clarity, robustness, and efficiency.