Symfony使用Redis作为默认缓存已编译容器

时间:2019-06-24 15:27:50

标签: php symfony caching redis

我有一个Symfony应用程序,我想将Redis用作缓存系统。 Symfony默认的默认缓存系统是文件系统缓存。

从我了解到的文档中

在Symfony中有两个命名的缓存。 cache.appcache.system,所以我都使用以下cache.yaml将它们都设置为Redis:

framework:
    cache:
    # Put the unique name of your app here: the prefix seed
    # is used to compute stable namespaces for cache keys.
    prefix_seed: myteam/myapp

    default_redis_provider: "redis://redis:6379"

    # The app cache caches to the filesystem by default.
    # Other options include:

    # cache.app via Redis
    app: cache.adapter.redis

    # cache.system also
    system: cache.adapter.redis

这样做之后,我加载了一个示例页面并监视了缓存文件夹。我发现即使在Redis中创建了密钥,仍在缓存文件夹中创建文件。

我知道Symfony不建议您将内核在文件高速缓存中创建的文件弄乱,但甚至会将cache / prod / Containerxxxxx文件夹写入其中。

不属于应用程序或系统的文件夹中可能缓存什么?我还错过了另一个命名缓存吗?

1 个答案:

答案 0 :(得分:2)

cache/prod/Containerxxxxx处的文件是已编译的容器文件。

这些总是写入您的文件系统,而永远不会写入其他辅助缓存系统。

Symfony首先不知道如何从容器中获取Redis信息,而在编译和构建时,容器总是缓存到文件系统中。

  • cache.system用于注释,序列化程序和验证之类的内容;但不适用于已编译的容器本身。

  • cache.app是应用程序缓存,如果您在服务方法中键入提示CacheInterfacePsr\\Cache\\CacheItemPoolInterface,则可以在应用程序中使用。

    < / li>

总结起来,您没有可配置的其他缓存,因此Symfony会将已编译的容器存储在那里。这些文件是代码,并存储在文件系统上。