This guide will help you setup Memcached on a CentOS server.
What is caching
Before diving into Memcache specifically, let’s take a step back. What is caching? Why should you care and why should you use it? Caching is used for two very important reasons: to speed up the delivery of the pages and to alleviate system resources. Caching is used to speed up dynamic sites; database driven sites will benefit most form caching. Think about a Wordpress site. Each page you visit is not an actually file, but rather an amalgamation of the theme, widgets, posts, footers, headers, etc… Each time a page is accessed, PHP will generate the page requested on the fly from the database. It takes time to query the database to create the page. These database queries put a strain on the resources of your server.
However, what if instead of continually generating a new page, the same page, for every visitor, you were to turn those pages into static HTML files? No database querying is needed for the new visitors. A static file can be served up much faster and with significantly less resource consumption. Your visitors see their requested page sooner, and you save on CPU cycles. Everyone is happy. This is what caching does.
What is Memcached
Memcached is a general-purpose distributed memory caching system. It is one of the most popular caching tools and is used in such popular sites as: YouTube, Reddit, Zynga, Facebook, and Twitter.
According to Memcached’s official site, Memcached is defined as:
Free & open source, high-performance, distributed memory object caching system, generic in nature, but intended for use in speeding up dynamic web applications by alleviating database load.
In simpler terms, it decreases database load by storing objects in memory.
Installing Memcached (daemon)
The quickest and easiest method would be to install via Yum. First, you must grab the RPM that matches your OS:
CentOS 6 (64 bit):
su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/x86_64/epel-release-6-8.noarch.rpm'
CentOS 6 (32 bit):
su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/6/i386/epel-release-6-8.noarch.rpm'
CentOS 5 (64 bit):
su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/5/x86_64/epel-release-5-4.noarch.rpm'
CentOS 5 (32 bit):
su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/5/i386/epel-release-5-4.noarch.rpm'
CentOS 4 (32 bit):
su -c 'rpm -Uvh http://mirrors.kernel.org/fedora-epel/4/i386/epel-release-4-10.noarch.rpm'
Now, to install it with Yum:
yum install memcached
Start the memcached service:
Configure the memcached service to start when the server boots:
chkconfig memcached on
Finally, disable the RPM so that it is not used for future Yum functions:
perl -pi -e "s/enabled=1/enabled=0/g;" /etc/yum.repos.d/epel.repo
It’s always a good idea to check your work. Make sure that memcached is running:
ps auwx | grep memcache
For information on how to install the PHP extension so that your PHP software can interface with memcached (daemon), see my article here: How to install PHP memcache
Note about this article
This article is one I had written and shared with the ServInt blog as part of the ‘Tech bench’ series. You can view it on the ServInt blog here. They are using my article with my permission.
This post has been updated since it’s original publishing. Here is a list of changes:
- 01/02/13: Updated RPM locations