How to Implement Memcached in PHP CodeIgniter
Codeigniter 04-Mar-2020

How to Implement Memcached in PHP CodeIgniter

In this post I would to share how to install memcached caching system in amazon ec2 cloud server and access it via php codeigniter framework. We can store any data like plain text, json, array & html contents into the server memory.

Stored  values  can be accessible by using  keys .

About Memcached

High-performance, distributed memory object caching system, intended for use in speeding up dynamic web applications.

The use of memcached is to speed-up the websites by using the memory space of our unused domains and store the database query results in the cache and minimize the application-database interaction.

Intall Memcached in Amazon EC2

Below are the configuration used to install memcached in ubuntu and Redhat or CentOS servers in Amazon EC2. There are two memcache extenstions are available. Memcache and Memcached  –  we are going to use Memcached since it is stable and it has more features.

Ubuntu Server

Run the below code in your server to install the latest version of memcached.

sudo apt-get update sudo apt-get install memcached

RedHat or CentOS Server

sudo yum updatesudo yum install memcached

check the memcache installation by using below commands

memcached -h //output memcached 1.4.5//start the memcached server service memcached start

If everything is fine then cacheing system is running fine in your server. You can also check the installation from  phpinfo() 

Download Codeigniter

Download the codeigniter latest stable framework from here – https://codeigniter.com/

Once you download the CI files and setup everything, just create a new controller and load the cache driver in it as belows

//to load the cache driver $this->load->driver('cache');

How to Check Memcached is Intalled in Codeigniter?

After you loaded the cache driver, you need check memcache is installed it or not by using the below code

$memcached_enabled = $this->cache->memcached->is_supported();if(!$memcached_enabled) {  echo "Memcached is not installed";  die; }

Next we will see how to stored and retrive values from Memcache in Codeigniter

Storing and Retriving Values – Memcache

How to Store Data in Memcached?

By using  save  function, we can save any values in the key. Save function comes with 4 parameters

 save($id, $data, $ttl = 60, $raw = FALSE) 

$id – Cache ID (Name of the cache)

$data – Data being cached

$ttl – Time to Live (Expiration time) – default is 60 seconds

$raw – Whether to store the raw value

lets see how to store data in memcache now.

$name = "W3lessons"; 
$this->cache->memcached->save('website_name', $name, 86400);

I have just store the value “W3lessons” in the key “website_name” with 1 day expiration time.

If you want to store an array or json, just store it directly as below

//to store an array
$details = array(
      'sitename'=>'W3lessons',
      'siteurl'=> 'https://w3lessons.info',
      'author'=>'Karthikeyan K'
    );
$this->cache->memcached->save('website_details', $details, 86400);

//to store an JSON - convert the array into json
$details_json = json_encode($details);
$this->cache->memcached->save('website_details_json', $details_json, 86400);

How to Retrive / Get data in Memcached?

By using the “key” (cache name) we can get the data from memcache.

$this->cache->memcached->get('website_name');
//output
W3lessons

For the 1st time, we need to query the database and store it in the memcache, 2nd time onwards we need to check the data exists in the memcache and If exists, get it from cache and display. So your application will get the data always from the cache until it expires.

How to Check data already exists in Memcache?

 Get  function is used to check the data exists in memcache or not. If data not exists in cache, then we need to store it again in the memcache.

Get function returns data on success and false on failure

if($this->cache->memcached->get('website_name'))
{
  $name = "W3lessons";
  $this->cache->memcached->save('website_name', $name, 86400);
}

How to Delete the data in Memcache?

You have to use  delete  function to delete the data from memcached. Delete function returns true on success and false on failure

$this->cache->memcached->delete('website_name');

Please feel free ask me anything about memcached in codeigniter via comments, I’m ready to share my knowledge with you since I have more than 6 years of experience in Codeigniter, Apache, Nginx and Amazon Web Services