15.6 Using MySQL with memcached

memcached is a simple, highly scalable key-based
cache that stores data and objects wherever dedicated or spare RAM
is available for quick access by applications, without going through
layers of parsing or disk I/O. To use, you run the
memcached command on one or more hosts and then
use the shared cache to store objects. For more usage instructions,
see Section 15.6.2, “Using memcached”

Benefits of using memcached include:

Because all information is stored in RAM, the access speed is
faster than loading the information each time from disk.

Because the “value” portion of the key-value pair
does not have any data type restrictions, you can cache data
such as complex structures, documents, images, or a mixture of
such things.

If you use the in-memory cache to hold transient information, or
as a read-only cache for information also stored in a database,
the failure of any memcached server is not
critical. For persistent data, you can fall back to an
alternative lookup method using database queries, and reload the
data into RAM on a different server.

The typical usage environment is to modify your application so that
information is read from the cache provided by
memcached. If the information is not in
memcached, then the data is loaded from the MySQL
database and written into the cache so that future requests for the
same object benefit from the cached data.

In the example structure, any of the clients can contact one of the
memcached servers to request a given key. Each
client is configured to talk to all of the servers shown in the
illustration. Within the client, when the request is made to store
the information, the key used to reference the data is hashed and
this hash is then used to select one of the
memcached servers. The selection of the
memcached server takes place on the client before
the server is contacted, keeping the process lightweight.

The same algorithm is used again when a client requests the same
key. The same key generates the same hash, and the same
memcached server is selected as the source for
the data. Using this method, the cached data is spread among all of
the memcached servers, and the cached information
is accessible from any client. The result is a distributed,
memory-based, cache that can return information, particularly
complex data and structures, much faster than natively reading the
information from the database.

The data held within a traditional memcached
server is never stored on disk (only in RAM, which means there is no
persistence of data), and the RAM cache is always populated from the
backing store (a MySQL database). If a memcached
server fails, the data can always be recovered from the MySQL
database.