REDIS in CodeIgniter 3 for caching web page

I was working on optimization of my project built on CodeIgniter 3 lately that includes optimizing sql queries, methods and caching. For caching, I’m using REDIS (Remote Dictionary Server) as cache server that I had been using in other projects as well for caching. Setting up redis cache in CodeIgniter 3 is quiet easy. We just need to create a config file for connecting to cache server and load cache driver with  adapter in our controller. We can also setup backup cache driver for backup.

Configure Redis

Create a config file application/config/redis.php with following content.

$config[‘socket_type’] = ‘tcp’; //`tcp` or `unix`
$config[‘socket’] = ‘/var/run/redis.sock’; // in case of `unix` socket type
$config[‘host’] = ‘127.0.0.1’; //change this to match your amazon redis cluster node endpoint
$config[‘password’] = NULL;
$config[‘port’] = 6379;
$config[‘timeout’] = 0;

Now load cache driver in constructor of controller ans set it as primary adapter and file cache driver as backup adapter. It’s always a good idea to have a backup plan.

$this->load->driver('cache', array('adapter' => 'redis','backup' => 'file')));

Finally we save to cache and get from cache server as follows.

if($this->cache->redis->is_supported()) {
	$cached = $this->cache->get('key')
	if($cached != null){
		echo $cached;
	}
	else{
		echo 'Some Value';
		$this->cache->save('key, 'Some Value');
	}
}

To set timeout on cache key, we can pass third parameter in save function in seconds (i.e. 60).

$this->cache->save('key, 'Some Value',300);

This will expire cache key in 5 minutes (300 seconds).
Find more info on CodeIgniter Caching Driver here.