删除 Symfony 缓存文件夹 - 用于无状态水平缩放

Remove the Symfony cache folder - for stateless horizontal scaling

我想知道是否可以将 Symfony 应用程序的所有缓存数据保存在像 AWS ElastiCache 这样的 Redis 容器中。

我了解了您可以在框架中选择的 RedisAdapter:

cache:    
     app: cache.adapter.redis
     default_redis_provider: "redis://%env(REDIS_HOST)%:%env(REDIS_PORT)%"

如果你想保存和读取 in/from Redis 缓存,那是可行的。

但无论如何,Symfony 的其余数据都存储在缓存目录中。有没有可能让 Symfony 完全无状态?

您可以在相同的配置中更改系统缓存:

framework:
    cache:
        app: cache.adapter.redis
        system: cache.adapter.redis
        default_redis_provider: "redis://%env(REDIS_HOST)%:%env(REDIS_PORT)%"

这应该在 Redis 中存储所有与框架相关的缓存,如翻译、模板、编译注释等。您可能还必须更改其他与应用程序相关的缓存,例如 Doctrine 和其他 3rd 方工具。

您可能还想查看 Chain Adapter,它保存所有链式适配器中的所有条目,但从头到尾逐一获取它们,这是提供回退的好方法,在如果您的 Redis 集群停机或您遇到停机时间。如果你使用基于 Docker 的设置,你应该能够在构建期间预热所有缓存,然后 Symfony 应该不需要编写任何新缓存,使得启动新实例变得容易,即使你没有不要使用 Redis 缓存或在链中使用它。