Как определить, поступил ли запрос 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