在LswMemcacheBundle中缓存生命周期

时间:2013-10-17 20:43:54

标签: php symfony doctrine-orm memcached lsw-memcache-bundle

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

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

2 个答案:

答案 0 :(得分: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为缓存密钥。

答案 1 :(得分:1)