首页 文章

部署时在redis中清除doctrine缓存

提问于
浏览
7

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

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

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

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

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

  • 在部署开始时修改parameters.yml

  • 使用将在每次部署时更改的环境变量

  • 将redis连接设置移动到另一个符号链接到其中一个配置的文件

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

1 回答

  • 5

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

    我用Doctrine Cache namespaces解决了这个问题

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

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

相关问题