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

5

我有一个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个回答

11

cache/prod/Containerxxxxx 目录下的文件是已编译好的容器文件。

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

如果没有从容器获取该信息,Symfony 就无法访问 Redis,因此在编译和构建时,容器总是被缓存到文件系统中。

  • cache.system 用于注释、序列化和验证等内容,但不用于已编译的容器本身。

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

总之,没有其他缓存可供您配置,以便 Symfony 将已编译的容器存储在其中。这些文件是代码,并存储在文件系统上。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接