删除 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 缓存或在链中使用它。
我想知道是否可以将 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 缓存或在链中使用它。