部署时在redis中清除doctrine缓存

Gus*_*tek 7 capistrano redis symfony doctrine-orm

我们将doctrine缓存保存在redis中,并使用capistrano进行部署.一切都很好,直到我们必须删除实体上的字段.

当执行编写器中的安装后命令时,我们得到如下错误:

[ReflectionException]**[out Property Entities\PlayerRecord :: $ shirtNumber不存在

$shirtNumber是我们删除的字段.为了能够继续,我们只需要清除doctrine缓存,但因为它位于redis数据库中,所以缓存与生产共享.

问题是我们如何在每次部署时动态更改redis的连接设置?我想到的唯一想法是:

  1. 在部署开始时修改parameters.yml
  2. 使用将在每次部署时更改的环境变量
  3. 将redis连接设置移动到另一个符号链接到其中一个配置的文件

你有其他想法或哪个更好?

Gus*_*tek 6

所以我似乎因为自己缺乏知识而试图过度复杂化.

我使用Doctrine Cache命名空间解决了这个问题

我正在使用SncRediBundle,解决方案只是使用此配置:

  doctrine:
    metadata_cache:
      client: cache
      namespace: "%kernel.root_dir%"
      entity_manager: default
Run Code Online (Sandbox Code Playgroud)