2017-05-26 68 views
2

我试图使用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(); 

回答

0

正如你在这个测试https://github.com/doctrine/doctrine2/blob/master/tests/Doctrine/Tests/ORM/Functional/ResultCacheTest.php#L40中看到的那样,没有这样做的功能。

您可以通过但无论是定义自己的cacheId或使用 ->getQuery()->getResultCacheId() 弃用->getQuery()->getQueryCacheProfile()->getCacheKey()->getQuery()->getResultCacheDriver()->fetch($cacheKey)

实现这一来源:https://github.com/doctrine/doctrine2/blob/master/lib/Doctrine/ORM/AbstractQuery.php#L945

相关问题