我想在我的Symfony 5.0.8项目中使用Redis 6.0.1来缓存Doctrine 2查询和结果。在添加了predis/predis包后,我尝试在cache.yaml和doctrine.yaml中配置Redis for Doctrine,但我不确定我的配置是否正确。
doctrine.yaml
doctrine:
dbal:
default_connection: default
connections:
default:
dbname: '%env(DATABASE_NAME)%'
user: '%env(DATABASE_USER)%'
password: '%env(DATABASE_PASSWORD)%'
host: '%env(DATABASE_HOST)%'
driver: '%env(DATABASE_DRIVER)%'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
metadata_cache_driver: ~
query_cache_driver:
type: pool
id: doctrine.query_cache_pool
result_cache_driver:
type: pool
id: doctrine.result_cache_poolcache.yaml
framework:
cache:
# Redis
app: cache.adapter.redis
default_redis_provider: redis://localhost你觉得我对Redis的配置正确吗?如何测试Redis在我的项目中是否正常工作?
提前感谢
发布于 2020-05-06 16:44:22
我终于成功了,我给那些和我一样的人提供了解决方案:
cache.yaml:
framework:
cache:
app: cache.adapter.redis
default_redis_provider: "redis://%env(REDIS_HOST)%:%env(REDIS_PORT)%"
pools:
doctrine.result_cache_pool:
adapter: cache.adapter.redis
doctrine.system_cache_pool:
adapter: cache.adapter.redisdoctrine.yaml:
doctrine:
dbal:
default_connection: default
connections:
default:
dbname: '%env(DATABASE_NAME)%'
user: '%env(DATABASE_USER)%'
password: '%env(DATABASE_PASSWORD)%'
host: '%env(DATABASE_HOST)%'
driver: '%env(DATABASE_DRIVER)%'
orm:
auto_generate_proxy_classes: true
naming_strategy: doctrine.orm.naming_strategy.underscore_number_aware
auto_mapping: true
mappings:
App:
is_bundle: false
type: annotation
dir: '%kernel.project_dir%/src/Entity'
prefix: 'App\Entity'
alias: App
metadata_cache_driver: ~
query_cache_driver:
type: pool
pool: doctrine.system_cache_pool
result_cache_driver:
type: pool
pool: doctrine.result_cache_pool在Doctrine Repository中,我创建了此函数,并在所有存储库函数中使用:
protected function getQueryBuilder(): QueryBuilder
{
return $this->createQueryBuilder('article')
->setCacheMode(Cache::MODE_NORMAL)
->setCacheable(true)
->setLifetime(300);
}docker-compose.yaml:
version: "3.4"
services:
php:
...
depends_on:
- redis
redis:
image: redis:6.0.1
ports:
- 6379:6379
volumes:
- ./docker/redis/redis.conf:/redis.conf
command: [ "redis-server", "/redis.conf" ].env.local:
###> Redis ###
REDIS_HOST=redis
REDIS_PORT=6379
###> Redis ###https://stackoverflow.com/questions/61609289
复制相似问题