How to Install Memcached (Caching Server) on CentOS 7

Memcached is an open source distributed memory object caching program that allows us to improve and speed up the performance of dynamic web applications by caching data and objects in Memory.

Memcached is also used to cache entire database tables and queries to improve the performance of the database. It is the only caching system available freely and used by many big sites like YouTube, Facebook, Twitter, Reddit, Drupal, Zynga etc.

Memcached can commit to denial of service attacks if not correctly configured. In this article, we will explain how to install and secure your Memcached server on CentOS 7 Linux distribution. These given instructions also works on RHEL and Fedora Linux.

Installing Memcached in CentOS 7

First update your local software package index and then install Memcached from the official CentOS repositories using following yum commands.

# yum update
# yum install memcached
Install Memcached in CentOS 7

Install Memcached in CentOS 7

Next, we will install libmemcached – a client library that offers a couple of tools to manage your Memcached server.

# yum install libmemcached
Install Memcached Library in CentOS 7

Install Memcached Library in CentOS 7

Memcached should now be installed on your CentOS system as a service, along with the tools that required you to test its connectivity. Now we can proceed further to secure its configuration settings.

Securing Memcached Configuration Settings

To make assure that installed Memcached service is listening on the 127.0.0.1 local interface, we will alter the OPTIONS variable in the /etc/sysconfig/memcached configuration file.

# vi /etc/sysconfig/memcached

Search for the OPTIONS variable, and add the -l 127.0.0.1 -U 0 to OPTIONS variable. These configuration settings will protect our server from denial of service attacks.

/etc/sysconfig/memcached
PORT="11211"
USER="memcached"
MAXCONN="1024"
CACHESIZE="64"
OPTIONS="-l 127.0.0.1 -U 0" 
Secure Memcached Configuration

Secure Memcached Configuration

Let’s discuss each of the above parameters in details.

  1. PORT : The port used by Memcached to run.
  2. USER : The start-up daemon for Memcached service.
  3. MAXCONN : The value used to set max simultaneous connections to 1024. For busy web servers you can increase to any number based on your requirements.
  4. CACHESIZE : Set cache size memory to 2048. For busy servers you can increase up to 4GB.
  5. OPTIONS : Set IP address of server, so that Apache or Nginx web servers can connect to it.

Restart and enable your Memcached service to apply your configuration changes.

# systemctl restart memcached
# systemctl enable memcached

Once started, you can confirm that your Memcached service is bound to the local interface and listening only on TCP connections using following netstat command.

# netstat -plunt
Verify Memcached Server

Verify Memcached Server

You can also check the stats of the server using memcached-tool as shown.

# memcached-tool 127.0.0.1 stats
Check Memcached Running Status

Check Memcached Running Status

Now make sure to allow access to Memcached server by opening a port 11211 on your firewall as shown.

# firewall-cmd --permanent --zone=public --add-port=11211/tcp

Install Memcached PHP extension

Now, install PHP extension to work with Memcached daemon.

# yum install php-pecl-memcache

Install Memcached Perl Library

Install perl library for Memcached.

# yum install perl-Cache-Memcached

Install Memcached Python Library

Install python library for Memcached.

# yum install python-memcached

Restart Web Server

Restart the Apache or Nginx service to reflect changes.

# systemctl restart httpd
# systemctl restart nginx

Cache MySQL Queries with Memcached

It isn’t an easy task for all, you need to use API’s to modify your PHP codes to enable MySQL caching. You can find the examples codes at Memcache with MySQL and PHP.

That’s It! In this article, we have expanded how to install and secure your Memcached server to local network interface. If you have faced any issues during installation, do ask for help in our comment section below.

Best Affordable Linux and WordPress Services For Your Business
Outsource Your Linux and WordPress Project and Get it Promptly Completed Remotely and Delivered Online.

If You Appreciate What We Do Here On TecMint, You Should Consider:

  1. Stay Connected to: Twitter | Facebook | Google Plus
  2. Subscribe to our email updates: Sign Up Now
  3. Get your own self-hosted blog with a Free Domain at ($3.45/month).
  4. Become a Supporter - Make a contribution via PayPal
  5. Support us by purchasing our premium books in PDF format.
  6. Support us by taking our online Linux courses

We are thankful for your never ending support.

Ravi Saive

I am Ravi Saive, creator of TecMint. A Computer Geek and Linux Guru who loves to share tricks and tips on Internet. Most Of My Servers runs on Open Source Platform called Linux. Follow Me: Twitter, Facebook and Google+

Your name can also be listed here. Got a tip? Submit it here to become an TecMint author.

RedHat RHCE and RHCSA Certification Book
Linux Foundation LFCS and LFCE Certification Preparation Guide

You may also like...

14 Responses

  1. Orazio says:

    Hi Ravi,

    I followed this fantastic guide and installed memcache. Now on my server, if I test it from the console, memcache is installed, but if i try from PHP info it is not installed. I need to speed up Prestashop but even from the control panel of Prestashop Memcache it is not seen. What am I doing wrong?

    • Ravi Saive says:

      @Orazio,

      Please install Memcached PHP extension to work with Memcached daemon.

      # yum install php-pecl-memcache
      
  2. olidev says:

    Nicely explained. Why some prefer CentOS over Debian? To me, Debian has been really easy to setup. It was also really easy to configure Memcached with PHP on Debian. Do you think it is because of performance or maybe security?

  3. landy says:

    With server have 1G ram, how many config Cachesize=?

  4. De Nguyen says:

    Could you show me how about the hardware requirement to install Memcache?

  5. bala says:

    when editing memchached file pls put -l local host that is not “-1” thats “l”

  6. RAJ says:

    Hi,

    Every thing fine but now how can we route all the Users to Memcached server to avail the cache service?

  7. Umesh Gaire says:

    Hi, I am a subscriber of your site. And I found a confusion; at the firewall you have inserted the IP ranges from 172.16.1.1 to 172.16.1.10 for Port 11211

    what I need to put there ? should I need to insert there my vps’ ip address or local ipaddress ? Please help me. What I need to put there ?

  8. FiFi says:

    In the Enable EPEL Repository section, under RHEL 5/CentOS 5 64-bit, the second command has an extra “wget” at the start. It should just be an “rpm” command like the second command in the other related sections, but it has “wget rpm …” and the “wget ” is extra.

  9. Ravi says:

    Good one ….

Leave a Reply to BiBi Cancel reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.