如何检测Doctrine查询是否来自缓存?

时间:2017-05-26 15:08:05

标签: symfony doctrine predis

我尝试将Docs与Redis和Predis以及Doctrine Result Caching和Symfony一起使用。

我想知道我的缓存+ doctrine + redis + predis + SncRedisBundle配置是否设置正确

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

$products = $query->getResult();

因为下面的查询显示了预期的内容,但我怎么知道它是否来自缓存?

public dynamic CreateOrUpdate([FromBody]object body)
    {
        return _blService.CreateOrder(body);
    }

1 个答案:

答案 0 :(得分: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