3

LswMemcacheBundle (Symfony2 内) を使用して Doctrine2 クエリを memcached にキャッシュすることにしましたが、問題が 1 つあります。デフォルトの寿命についてさえ、キャッシュの寿命を変更する可能性に関する情報が見つかりません。

私にそのような情報を提供できる人はいますか?

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 に答える