我有一个Symfony应用程序,我想将Redis用作缓存系统。 Symfony默认的默认缓存系统是文件系统缓存。
从我了解到的文档中在Symfony中有两个命名的缓存。 cache.app
和cache.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文件夹写入其中。
不属于应用程序或系统的文件夹中可能缓存什么?我还错过了另一个命名缓存吗?
答案 0 :(得分:2)
cache/prod/Containerxxxxx
处的文件是已编译的容器文件。
这些总是写入您的文件系统,而永远不会写入其他辅助缓存系统。
Symfony首先不知道如何从容器中获取Redis信息,而在编译和构建时,容器总是缓存到文件系统中。
cache.system
用于注释,序列化程序和验证之类的内容;但不适用于已编译的容器本身。
cache.app
是应用程序缓存,如果您在服务方法中键入提示CacheInterface
或Psr\\Cache\\CacheItemPoolInterface
,则可以在应用程序中使用。
总结起来,您没有可配置的其他缓存,因此Symfony会将已编译的容器存储在那里。这些文件是代码,并存储在文件系统上。