我有一个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不建议处理内核在文件缓存中创建的文件,但即使是写到的缓存/prod/Containerxxxxx文件夹也是如此。
在不属于应用程序或系统的文件夹中缓存什么?是否还有另一个名为cache的缓存我错过了?
发布于 2019-06-25 10:35:39
cache/prod/Containerxxxxx
中的文件是已编译的容器文件。
这些文件总是写入您的文件系统,并且永远不会写入其他二级缓存系统。
Symfony一开始就不知道如何访问Redis,如果不从容器中获取该信息,则容器在编译和构建时总是缓存到文件系统。
cache.system
用于注释、序列化程序和验证等,但不用于已编译容器本身。cache.app
是应用程序缓存,如果您在服务方法中键入提示CacheInterface
或Psr\\Cache\\CacheItemPoolInterface
,就可以在应用程序中使用它。总之,您无法配置其他缓存,因此Symfony将在那里存储已编译的容器。这些文件是代码,并存储在文件系统中。
https://stackoverflow.com/questions/56739759
复制相似问题