缓存自动过期

1dkrff03  于 2021-06-09  发布在  Redis
关注(0)|答案(1)|浏览(415)

我使用的是symfony3.4+documenty+redis,使用的是composer包sncredisbundle
在我的config.yml中,我启用了查询缓存:

orm:
    default_entity_manager: default
    entity_managers:
        default:
            connection: default
            auto_mapping: false
            metadata_cache_driver: redis
            query_cache_driver: redis
            result_cache_driver: redis # !!!

snc_redis:
clients:

    doctrine:
        type: predis
        alias: doctrine_redis
        dsn: "%redis_dsn_doctrine%"
        logging: false
        options:
            connection_persistent: true

doctrine:
    query_cache: #!!!!!!!!
      #it caches the translation from Doctrine's DQL into SQL.
        client: doctrine_redis
        namespace: shop_doctrine_query  
        entity_manager: [default, legacy]

条令为其结果缓存设置的密钥永不过期:

我怎么能自动打电话 \Doctrine\ORM\Query::setQueryCacheLifetime 或者让缓存过期(注意:我无权在此服务器上设置redis逐出策略)。

nwwlzxa7

nwwlzxa71#

我认为条令查询缓存生存期既没有在条令包中配置,也没有在redis包中配置,而是在framework包中配置,您可以在其中设置缓存池。
您应该看看这个问题,用户询问如何使用缓存配置rediscluster。b-galati给出了一个配置示例,其中定义了条令结果缓存的生存期。
你能试试这样的吗:

framework:
    cache:
        pools:
            cache.doctrine.orm.default.query: ## I'm not sure of this name
                adapter: cache.app
                default_lifetime: 25200 # 1 week

framework:
    cache:
        pools:
            doctrine.query_cache_pool:
                adapter: cache.app
                default_lifetime: 25200 # 1 week

这个 symfony console cache:pool:list 命令可以帮助您识别池和 symfony console cache:pool:prune 可以帮助您查看过期查询是否已被删除。

相关问题