Symfony 2缓存条令查询结果


Symfony 2 cache Doctrine query results

我正在使用Doctrine进行Symfony2项目。我想通过向查询添加缓存来优化API性能。

我已经考虑了一些选项,例如:

  • Symfony注释缓存
  • 条令缓存
  • Memcache

不确定我应该选择哪一个,但对我来说,在条令级别缓存数据似乎是最合适的。

说我希望有人能帮助我或指导我如何建立条令缓存,并解释它是如何工作的。

I.e我有这个问题:

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

您可能还想检查这个和这个博客条目