使用带有Memcached驱动程序的PhpFastCache将标签添加到缓存条目需要很长时间

问题描述 投票:4回答:1

这里是代码:

    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个标签。

我需要这些标签,以便能够在需要时使缓存无效。否则,我将不得不将缓存时间从2h大幅减少到几分钟。

任何想法为什么要放置标签都需要这么多时间,以及我将如何改进它?

有关信息,命中缓存时,我的性能很好。我正在使用Memcached驱动程序,但是我尝试使用Redis代替,使用它时没有此问题。可悲的是,我的领导不想使用Redis,而是坚持使用Memcached。

php caching memcached phpfastcache
1个回答
0
投票

您的缓存中到底有多少种产品?标签应以“ oneToMany”方式使用,而不是“ manyToOne”方式,这可以解释为什么您会遇到性能问题。

此外,由于I / O活动会破坏应用程序的性能,因此它的效率要比Redis(及其他)之类的基于内存的驱动程序低得多。

© www.soinside.com 2019 - 2024. All rights reserved.