davidepedone / laravel-redis-fallback by davidepedone

Laravel 4 redis cache fallback to file
137
4
2
Package Data
Maintainer Username: davidepedone
Maintainer Contact: davide.pedone@gmail.com (Davide Pedone)
Package Create Date: 2015-03-23
Package Last Update: 2015-03-24
Home Page: https://packagist.org/packages/davidepedone/laravel-redis-fallback
Language: PHP
License: MIT
Last Refreshed: 2024-04-17 15:15:39
Package Statistics
Total Downloads: 137
Monthly Downloads: 0
Daily Downloads: 0
Total Stars: 4
Total Watchers: 2
Total Forks: 5
Total Open Issues: 0

Redis cache fallback for Laravel4

If you use Redis as cache driver on Laravel 4 and for some reason Redis server became unavailable, you will end up with a Connection Refused exception. This package simply checks for the connection and if test fails, cache is switched to file driver. As soon as Redis come back it will be used again.

##How it works LaravelRedisFallbackServiceProvider class extends Illuminate\Cache\CacheServiceProvider and overrides register() method as follow:

	public function register(){

		$this->app->bindShared('cache', function($app){
			return new \Davidepedone\LaravelRedisFallback\LaravelRedisFallback($app);
		});
		...
	}

LaravelRedisFallback class extends Illuminate\Cache\CacheManager and overrides createRedisDriver() method as follow:


    protected function createRedisDriver() {

        $redis = $this->app['redis'];
        $redisStore = new RedisStore($redis, $this->getPrefix());

        try{

            $redisStore->getRedis()->ping();
            return $this->repository( $redisStore );

        }catch(\Exception $e){

            return parent::createFileDriver();
        }
        
    }

##How to use Install LaravelRedisFallback as a Composer package, adding this line to your composer.json:

"davidepedone/laravel-redis-fallback": "dev-master"

and update your vendor folder running the composer update command.

Replace the default cache service provider:

'providers' => array(
	...
	//'Illuminate\Cache\CacheServiceProvider',
	...
	'Davidepedone\LaravelRedisFallback\LaravelRedisFallbackServiceProvider'
	...
)

Enjoy!