我刚刚使用以下配置在我的symfony应用程序上启用了查询缓存:
Doctine缓存配置
doctrine_cache:
providers:
cache:
namespace: '%cache_namespace%'
chain:
providers:
- array_cache
- redis_cache
- file_cache
redis_cache:
namespace: '%cache_namespace%'
predis:
host: "%redis_host%"
port: "%redis_port%"
password: "%redis_password%"
timeout: "%redis_timeout%"
array_cache:
namespace: '%cache_namespace%'
array: ~
file_cache:
namespace: '%cache_namespace%'
file_system:
directory: "%kernel.cache_dir%/application"
Doctrine ORM config
orm:
auto_generate_proxy_classes: "%kernel.debug%"
entity_managers:
an_entity_manager:
connection: connection
mappings:
AppBundle: ~
naming_strategy: doctrine.orm.naming_strategy.underscore
metadata_cache_driver:
type: service
id: "doctrine_cache.providers.cache"
query_cache_driver:
type: service
id: "doctrine_cache.providers.cache"
result_cache_driver:
type: service
id: "doctrine_cache.providers.cache"
我还有功能测试,填充本地sqlite数据库而不是真实数据库。我所看到的是以下内容:
每次运行测试时,我都会看到Redis缓存即使对于相同的记录也会创建新密钥。我猜测这一定是因为数据库在每次测试执行之前都会被重新创建,而新创建的行的内容就缓存而言并不重要,但我无法做到这一点。一定不会。
有人知道这种预期的行为吗?
答案 0 :(得分:0)
您应该在测试环境中禁用Redis(以及所有不必要的外部依赖项)。这可以通过仅使用内存缓存来覆盖测试环境中的配置。
要阅读更多丰富的环境和配置,您可以查看Symfony文档:http://symfony.com/doc/current/book/configuration.html#environment-configuration