部署时在redis中清除doctrine缓存

时间:2015-01-20 16:18:59

标签: symfony doctrine-orm redis capistrano

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

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

  

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

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

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

  1. 在部署开始时修改parameters.yml
  2. 使用将在每次部署时更改的环境变量
  3. 将redis连接设置移动到另一个符号链接到其中一个配置的文件
  4. 你有其他想法或者你认为哪一个更好?

1 个答案:

答案 0 :(得分:6)

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

我使用Doctrine Cache namespaces

解决了这个问题

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

  doctrine:
    metadata_cache:
      client: cache
      namespace: "%kernel.root_dir%"
      entity_manager: default