3

我决定使用 LswMemcacheBundle(在 Symfony2 中)将 Doctrine2 查询缓存到 memcached 中,但我遇到了一个问题。我找不到有关更改缓存寿命的可能性的任何信息,即使是关于默认寿命的信息。

有没有人可以提供我这样的信息?

4

2 回答 2

2

看起来并没有为所有查询启用结果缓存(但启用了查询缓存),我们需要使用useResultCache方法来启用它。此方法还允许我们设置缓存寿命。

所以它看起来像这样

$em->createQuery('SELECT a FROM SomeBundle:Entity a')
      ->useResultCache(true, 3600, 'cacheId')
      ->getResult();

并且对于createQueryBuilder

$repository = $this->getEntityManager()->getRepository('SomeBundle:Entity');
$qb = $repository->createQueryBuilder('g');
$qb->andWhere('g.categoryId = :categoryId')->setParameter('categoryId', '1');
$qb->addOrderBy('g.id', 'DESC');

$query = $qb->getQuery();
$query->useResultCache(true, 3600, 'cacheId');

其中3600将以秒为单位的缓存寿命和cacheId我们的缓存键。

于 2013-10-26T19:24:58.403 回答
1

我认为您仍然必须使用通过 cacheDriver 的方法设置缓存生存期。

http://docs.doctrine-project.org/en/2.0.x/reference/caching.html#result-cache

http://docs.doctrine-project.org/en/2.0.x/reference/caching.html#saving

于 2013-10-17T21:48:25.140 回答