我决定使用LswMemcacheBundle(在Symfony2中)将Doctrine2查询缓存到memcached中,但我遇到了一个问题。我找不到任何有关更改缓存生命周期的可能性的信息,甚至是关于默认生命时间的信息。
有没有人可以提供这样的信息?
答案 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)