swaty / laravel-fallback-cache
Allow Laravel cache connections to fallback to more stable drivers.
Installs: 405
Dependents: 0
Suggesters: 0
Security: 0
Stars: 0
Watchers: 1
Forks: 0
Open Issues: 0
pkg:composer/swaty/laravel-fallback-cache
Requires
- php: ^7.1.3 || ^8.0
- illuminate/cache: 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
- illuminate/config: 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
- illuminate/support: 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
Requires (Dev)
- illuminate/redis: 5.8.* || ^6.0 || ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
- laravel/framework: ^9.0 || ^10.0 || ^11.0 || ^12.0
- laravel/pint: ^1.20
- mockery/mockery: ^1.6.12
- pestphp/pest: ^2.35
- pestphp/pest-plugin-laravel: ^2.4
- phpunit/phpunit: ^7.0 || ^8.0 || ^9.0 || ^10.0 || ^11.0 || ^12.0
- predis/predis: ^2.0
README
Allow Laravel cache connections to fallback to more stable drivers.
This package is especially useful when you want your application to be fault-tolerant. For example, when using a Redis instance as cache store, you may want to be able to fallback to file store if the Redis instance is unavailable.
This package follows the Semantic Versioning specification.
Prerequisites
- PHP >= 7.1.3
- Laravel/Lumen 9.x, 10.x, 11.x
Supported cache methods
This package support most of the cache methods (e.g. get, put, etc.). The tagged cache is not supported at the moment.
Installation
Simply add swaty/laravel-fallback-cache to your package dependencies.
composer require swaty/laravel-fallback-cache
This package does not publish any resource and its configuration directly handled in the config/cache.php file.
Laravel
This package uses Laravel Package Discovery, so you do need to do anything more.
If you have disabled this feature, you can register the service provider in the config/app.php.
Lumen
Register the service provider in the bootstrap/app.php file like so:
$app->register(Swaty\CacheFallback\CacheServiceProvider::class);
Usage
The fallback key at the top level (next to default) specifies a fallback driver that will be used for all stores unless a store explicitly defines its own fallback.
<?php return [ 'default' => env('CACHE_DRIVER', 'file'), 'fallback' => 'array', 'stores' => [ 'file' => [ 'driver' => 'file', 'path' => storage_path('framework/cache/data'), ], 'redis' => [ 'driver' => 'redis', 'connection' => env('CACHE_REDIS_CONNECTION', 'cache'), ], ], ];
In the example above, if the redis store throws an exception, it will fallback to the array driver (as specified in its configuration).
For all other stores (e.g., file), if an exception occurs, they will fallback to the global array driver.