【问题标题】:Default to Laravel File cache if redis is down如果 redis 关闭,默认为 Laravel 文件缓存
【发布时间】:2015-03-18 19:54:59
【问题描述】:

本着“chaos monkey”的精神,我试图确保 laravel 应用程序即使在它所依赖的服务关闭时也能继续运行。

它使用一个数据库作为主存储,并使用一个 redis 缓存。我想做的是让它在redis失败时自动回退到文件缓存。

我找不到一个明确的例子。

【问题讨论】:

    标签: php caching laravel redis


    【解决方案1】:

    解决这个问题的一种方法是覆盖 Laravel 的默认 Illuminate\Cache\CacheManagerclass 并更改 ioc 绑定

    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');
            }
        }
    }
    

    在一些服务提供者中

    $this->app->singleton('cache', function($app)
    {
        return new MyCacheManager($app);
    });
    

    此解决方案还将使Cache 外观保持正常工作:)

    【讨论】:

    【解决方案2】:

    我刚刚创建了一个包来解决这个问题:https://github.com/mathieu-bour/laravel-cache-fallback,如果问题仍然相关的话。

    【讨论】:

      【解决方案3】:

      似乎有一个专门用于此的包: https://github.com/xtcat/laravel-redis-fallback

      我还没有找到类似的 Sessions 或 Queues 包。如果有人有,请在这里分享。

      【讨论】:

      【解决方案4】:

      你能不能只包含一个匿名函数来代替缓存驱动程序 cnfig 设置?

      可以尝试使用 Redis,如果失败则返回文件作为设置,如果成功则返回 Redis

      【讨论】:

      • 这更像是评论而不是问题的新答案
      猜你喜欢
      • 2016-02-01
      • 2021-07-22
      • 2018-01-30
      • 2021-02-25
      • 1970-01-01
      • 2021-12-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多