По умолчанию для кэша файлов Laravel, если redis не работает
в духе "хаос обезьяна " Я пытаюсь гарантировать, что приложение laravel продолжает работать, даже когда службы, от которых оно зависит, не работают.
Он использует БД для основного хранилища и кэш redis. То, что я хотел бы сделать, это автоматически вернуться к файловому кэшу, если и когда redis терпит неудачу.
Я не смог найти четкого примера.
3 ответов
один из способов решить эту проблему-перезаписать значение по умолчанию Laravel Illuminate\Cache\CacheManager
класс и изменить привязку МОК
class MyCacheManager extends Illuminate\Cache\CacheManager
{
protected function createRedisDriver(array $config)
{
try {
return parent::createRedisDriver($config);
} catch (\Exception $e) {
//Error with redis
//Maybe there is a more explicit exception ;)
return $this->resolve('file');
}
}
}
в некоторых ServiceProvider
$this->app->singleton('cache', function($app)
{
return new MyCacheManager($app);
});
это решение также сохранит Cache
рабочая фасад :)
кажется, что пакет именно для этого: https://github.com/xtcat/laravel-redis-fallback
Я еще не нашел подобных пакетов для сеансов или очередей. Пожалуйста, поделитесь здесь, Если кто-то есть.
вы не можете просто включить анонимную функцию вместо настройки драйвера кэша cnfig?
Это может попытаться использовать Redis, и если он не возвращает файл в качестве параметра и Redis, если это удастся