Я пытаюсь настроить кэш redis на результат некоторых сложных запросов
Поэтому я настраиваю свой redis и читаю документацию, использую метод useResultCache (см. Ниже) и вижу, что он сохраняетон должен перерисовываться, как я хочу, так что я думаю, что все прошло хорошо, но когда я проверил вызываемый 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;
Я думаю, что лучшие все еще используютметод доктрины, но я все еще не понимаю, чего не хватает.