Кэш-память Symfony 2: результаты запроса Doctrine

Я работаю над проектом Symfony2, используя Doctrine. Я хочу оптимизировать производительность API, добавив кэш к запросам.

Я рассмотрел несколько вариантов, таких как:

  • Кэш аннотаций Symfony
  • Кэш доктрины
  • Memcache

Не уверен, с какой из них я должен идти, но для меня кажется, что кэширование данных на уровне доктрины было бы наиболее подходящим.

Говоря, что я хотел бы, чтобы кто-то помог мне или руководил тем, как настроить кеш доктрины и объяснить, как это работает.

Т.е. у меня есть этот запрос:

class QueryFactory protected $connect; public function __construct(Connection $connection) { $this->connect = $connection; } private function myQuery() { return $this->connect->createQueryBuilder() ->select('user_id') ->from('users', 'u') ->where('u.user_id = 2'); } } 

Как добавить кеш к этому запросу? Есть ли какая-нибудь библиотека Доктрины, которую мне нужно вводить, любую вещь, которую мне нужно use ?

В doctrine для кеширования запросов или результатов вы можете сделать следующее:

 private function myQuery() { return $this->connect->createQueryBuilder() ->select('user_id') ->from('users', 'u') ->where('u.user_id = 2') ->getQuery() ->useQueryCache(true) // here ->useResultCache(true); // and here } 

Проверьте документ для получения дополнительной информации об этих методах. Это заставит your кэш-драйвер работать – неважно, какой драйвер вы используете.

Чтобы настроить Symfony на использование определенного драйвера запроса, вам необходимо настроить свои настройки в config.yml – проверьте это, чтобы просмотреть полный список параметров. Что важно в вашем кеше (это пример конфигурации apc ):

 entity_managers: some_em: query_cache_driver: apc metadata_cache_driver: apc result_cache_driver: apc 

Вы также можете проверить эту и эту запись в блоге