Вот код:
public static function applyInvalidationTags(ExtendedCacheItemInterface $cacheItem, $values): void
{
$isSomething = false;
$tags = [];
foreach ($values[0] as $value) {
$tags[] = 'product_id_' . $value->id;
if (!$isSomething && $value->isSomething) {
$tags[] = 'isSomething';
$isSomething = true;
}
}
$cacheItem->addTags($tags);
}
Когда я удаляю эту строку: '$ cacheItem-> addTags ($ tags);' мой запрос занимает около 1,6 с вместо 2,6 с. В $ values всегда есть менее 19 объектов [0]. Это означает, что в записи кэша может быть не более 20 тегов.
Мне нужны эти теги, чтобы иметь возможность сделать кэш недействительным при необходимости. Без этого мне пришлось бы радикально сократить время кэширования, с 2 часов до минут.
Любая идея, почему размещение тегов занимает так много времени и как я могу улучшить это?
Для информации , У меня хорошая производительность при попадании в кеш. Я использую драйвер Memcached, но я попытался использовать Redis, и у меня нет этой проблемы при его использовании. К сожалению, мое руководство не хочет использовать Redis и настаивает на использовании Memcached.