原则-查询构建器useResultCache和Redis问题

时间:2019-05-15 16:55:53

标签: symfony caching redis doctrine-orm

我尝试根据一些繁重的查询结果设置一些redis缓存

因此,我配置了redis,并阅读了文档,我使用useResultCache方法(请参见下文),并且我发现它可以根据需要将其保存到redis,所以我认为一切都很好,但是当我检查sql时所谓的我发现,即使存在缓存,该学说也会运行查询!

我尝试了很多次,似乎没有任何修改。

所以我认为,顺便说一句,我可以手动将实体保存在Redis中,所以我做到了:似乎工作正常,但是延迟加载不起作用!糟糕,我进行搜索后发现,这仅仅是因为实体未附加到ORM,所以我对每个结果进行了合并,而且看起来效果更好,但是...在某些地方,学说中称呼他应该已经拥有的外国实体内存,并且不会加载结果。我不知道,也许他不合并子实体。

第一次尝试

$query = $this->repository->findSomethingQuery()
    >getQuery();
$result = $query->useResultCache(true, $this->cacheTTL, $key);
$result = $query->getResult();

其他尝试

$contains = $this->predisCache->contains($key);
if ($contains) {
    $result = $this->predisCache->fetch($key);
    //attach entities to orm
    $this->mergeResult($result);
    return $result;
}
$result = $this->repository->findSomethingQuery()
            ->getQuery()
            ->getResult();
$this->predisCache->save($key, $result, $this->customerCacheTTL);
return $result;

我认为最好的还是使用教义法,但是我仍然不明白所缺少的是什么。

0 个答案:

没有答案