kub*_*lav 2 redis symfony doctrine-orm
在我的config_prod.yml文件中,我有以下配置。我在哪里可以配置Redis驱动程序-选项,例如unix套接字(或主机),数据库号等?
doctrine:
orm:
metadata_cache_driver: redis
query_cache_driver: redis
result_cache_driver: redis
Run Code Online (Sandbox Code Playgroud)
@ katona.abel给出的示例不起作用,但是将我引向此解决方案:
#services.yml
services:
redis_cache_service:
class: Doctrine\Common\Cache\RedisCache
calls:
- method: setRedis
arguments:
- '@redis'
redis:
class: Redis
public: false
calls:
- method: connect
arguments:
- '/var/run/redis/redis.sock' # or host/ip with port
- method: select
arguments:
- 13 # change database by index
Run Code Online (Sandbox Code Playgroud)
#config_prod.yml
doctrine:
orm:
metadata_cache_driver:
type: service
id: redis_cache_service
result_cache_driver:
type: service
id: redis_cache_service
query_cache_driver:
type: service
id: redis_cache_service
Run Code Online (Sandbox Code Playgroud)
对于 symfony 4.4/5,这里是如何完成的,因为文档有点混乱。
您需要先设置缓存池:
#config/packages/cache.yaml
framework:
cache:
default_redis_provider: 'redis://localhost' # or '%env(resolve:REDIS_URL)%'
pools:
doctrine.result_cache_pool:
adapter: cache.adapter.redis
Run Code Online (Sandbox Code Playgroud)
然后将这个池用于学说结果缓存,如下所示:
#config/packages/doctrine.yaml
doctrine:
...
orm:
result_cache_driver:
type: pool
pool: doctrine.result_cache_pool
Run Code Online (Sandbox Code Playgroud)