The largest problem with scalability within a typical environment is
the speed with which you can access information. For frequently
accessed information, using MySQL can be slow because each access of
information requires execution of the SQL query and recovery of the
information from the database. This also means that queries on
tables that are locked or blocking may delay your query and reduce
the speed of recovery of information.
memcached is a simple, yet highly-scalable
key-based cache that stores data and objects wherever dedicated or
spare RAM is available for very quick access by applications. To
use, you run memcached on one or more hosts and
then use the shared cache to store objects.Because each host's RAM
is storing information, the access speed will be much faster than
having to load the information from disk. This can provide a
significant performance boost in retrieving data versus loading the
data natively from a database. Also, because the cache is just a
repository for information, you can use the cache to store any data,
including complex structures that would normally require a
significant amount of effort to create, but in a ready-to-use
format, helping to reduce the load on your MySQL servers.
The typical usage environment is to modify your application so that
information is read from the cache provided by
memcached. If the information isn't 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 will generate the same hash, and the same
memcached server will be 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 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, albeit at
a slightly slower speed than loading the information from the cache.
User Comments
Add your own comment.