【发布时间】:2020-07-15 13:17:04
【问题描述】:
代码如下:
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[0] 中的对象总是少于 19 个。这意味着一个缓存条目最多可以有 20 个标签。
我需要这些标签能够在需要时使缓存失效。否则,我将不得不大幅减少缓存时间,从 2 小时缩短到几分钟。
知道为什么放置标签需要这么多时间以及如何改进这一点吗?
关于信息,当缓存被命中时,我有很好的性能。我正在使用 Memcached 驱动程序,但我尝试使用 Redis,使用它时没有这个问题。遗憾的是我的领导不想使用 Redis 并坚持使用 Memcached。
【问题讨论】:
标签: php caching memcached phpfastcache