php - Symfony 2 缓存 Doctrine 查询结果

标签 php symfony caching doctrine-orm

<分区>

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

我看过几个选项,例如:

  • Symfony 注释缓存
  • 原则缓存
  • 内存缓存

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

说我希望有人帮助我或指导我如何设置 Doctrine 缓存并解释它是如何工作的。

即我有这个查询:

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');
    }
}

我如何向该查询添加缓存?是否有任何 Doctrine 库我需要注入(inject)任何我需要使用的东西?

最佳答案

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
}

检查 doc有关这些方法的更多信息。这将使您的 缓存驱动程序正常工作——与您使用的驱动程序无关。

要配置 Symfony 以使用特定的查询驱动程序,您需要调整 config.yml 中的设置 - 检查 this查看完整的选项列表。缓存中重要的是(这是 apc 配置示例):

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

您可能还想查看 thisthis博客条目

关于php - Symfony 2 缓存 Doctrine 查询结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28498314/

相关文章:

javascript - 覆盖 WordPress 子主题中的 javascript 函数

Symfony:使用 SoftDeleteable 行为扩展时如何级联取消删除?

spring - 在Grails中实现Spring缓存插件

PHP - "n"列表中的 child 数量

php - 我怎样才能确保没有重复的条目被张贴到表中

php - 为不同的查询克隆 Eloquent 模型

php - 动态使用 setter 和 getter 的 symfony Doctrine

php - 在 Symfony2 中放置模型辅助函数的位置

ASP.NET HttpModule RewritePath 虚拟目录缓存不刷新

sql - 快速单表数据库