Почему данные не достаются из кеша?

Есть апи написанное на люмене. Запрос кучи заказов генерирует большой объем данным (в процессе сборки ресурса подтягиваются еще куча данных, в том числе raw запросы в бд). Было решено каждый заказ (order) кешировать, а в качестве кеш драйвера был выбран редис.

$orderIds = $request->list;

// Получаем ордера из кеша
$cachedOrders = Cache::tags($orderIds)->get('orders-resource') ?? [];

// Ищем айдишники, которых в кеше не было
$nonCachedIds = count($cachedOrders) === 0 ? $orderIds : $cachedOrders->whereNotIn('id', $orderIds);

// Получаем из базы не закешированные ордера
$fromDbOrders =  Order::withTrashed()->with('comments')->findMany($nonCachedIds);

foreach ($fromDbOrders as $order) {
    $orderResourced = OrderResource::make($order)->toArray($request);
    $cachedOrders[] = $orderResourced;
    Cache::tags($order->id)->put(
        "orders-resource",
        $orderResourced,
        Carbon::SECONDS_PER_MINUTE * 10000
    );
}

return response()->json(new Report(
    "200",
    $cachedOrders,
    "Список заказов для базы данных",
    $requestId
));


В редисе я их вижу, но при следующем запросе, пытаюсь вывести закешированные ордера через dd($cachedOrders); получаю пустоту. Быть может я не правильно понимаю концепцию тэгов ? без них трудно будет обойтись, т.к. к одному ордеру будет привязываться несколько кешей и будет необходимость чистить все что связано с конкретным ордером.
  • Вопрос задан
  • 179 просмотров
Решения вопроса 1
slowdream
@slowdream Автор вопроса
Тэги для подобного применения непригодны. Использую только для чистки кеша по тэгам.
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы