\u001B[1mSYNOPSIS\u001B[0m
    ${project.description}

    Original Maven URL:
        \u001B[33mmvn:${pkgGroupId}/${pkgArtifactId}/${pkgVersion}\u001B[0m

\u001B[1mDESCRIPTION\u001B[0m
    A simple, asynchronous, single-threaded memcached client written in java.

        * Efficient storage of objects. General serializable objects are stored in their serialized form and optionally
          compressed if they meet criteria. Certain native objects are stored as tightly as possible (for example, a
          Date object generally consumes six bytes, and a Long can be anywhere from zero to eight bytes).
        * Resilient to server and network outages. In many cases, a client operation can be replayed against a server
          if it goes away and comes back. In cases where it can't, it will communicate that as well. An exponential
          backoff reconnect algorithm is applied when a memcached becomes unavailable, but asynchronous operations will
          queue up for the server to be applied when it comes back online.
        * Operations are asynchronous. It is possible to issue a store and continue processing without having to wait
          for that operation to finish. It is even possible to issue a get, do some further processing, check the result
          of the get and cancel it if it doesn't return fast enough.
        * There is only one thread for all processing. Regardless of the number of requests, threads using the client,
          or servers to which the client is connected, only one thread will ever be allocated to a given MemcachedClient.
        * Aggressively optimized. There are many optimizations that combine to provide high throughput.

\u001B[1mSEE ALSO\u001B[0m
    \u001B[36mhttp://code.google.com/p/spymemcached/\u001B[0m
