Как определить, поступил ли запрос Doctrine из кеша?

Я пытаюсь использовать Doctrine Result Caching с Redis и Predis, SncRedisBundle и Symfony.

Я хотел бы знать, правильно ли настроен мой кеш + доктрина + redis + predis + SncRedisBundle

snc_redis:
    clients:
        default:
            type: predis
            alias: default
            dsn: redis://localhost
    doctrine:
        metadata_cache:
            client: default
            entity_manager: default          
            document_manager: default        
        result_cache:
            client: default
            entity_manager: [default, read]  
        query_cache:
            client: default
            entity_manager: default

потому что под запросом отображается то, что ожидалось, но как узнать, пришло ли оно из кеша или нет?

$query = $repository->createQueryBuilder('p')
    ->where('p.id < :id')
    ->setParameter('id', '100')
    ->orderBy('p.id', 'ASC')
    ->getQuery()
    ->useQueryCache(true)    
    ->useResultCache(true); 

$products = $query->getResult();

1 ответ

Как вы можете видеть в этом тесте https://github.com/doctrine/doctrine2/blob/master/tests/Doctrine/Tests/ORM/Functional/ResultCacheTest.php этого нет функции.

Однако вы можете добиться этого, либо определив свой собственный cacheId, либо используя ->getQuery()->getResultCacheId() осуждается ->getQuery()->getQueryCacheProfile()->getCacheKey() а также ->getQuery()->getResultCacheDriver()->fetch($cacheKey)

источник: https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/AbstractQuery.php

Другие вопросы по тегам