我决定使用 LswMemcacheBundle(在 Symfony2 中)将 Doctrine2 查询缓存到 memcached 中,但我遇到了一个问题。我找不到有关更改缓存寿命的可能性的任何信息,即使是关于默认寿命的信息。
有没有人可以提供我这样的信息?
我决定使用 LswMemcacheBundle(在 Symfony2 中)将 Doctrine2 查询缓存到 memcached 中,但我遇到了一个问题。我找不到有关更改缓存寿命的可能性的任何信息,即使是关于默认寿命的信息。
有没有人可以提供我这样的信息?
看起来并没有为所有查询启用结果缓存(但启用了查询缓存),我们需要使用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
我们的缓存键。
我认为您仍然必须使用通过 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