Symfony не удаляет кеш по тэгам - PullRequest
0 голосов
/ 11 мая 2018

версия Symfony: 3.4.9

воспроизводящий:

$cache = new TagAwareAdapter($this->get('cache.app'));
$pagination = $cache->getItem(PostTypeDictionary::CACHE_MEDIA_PREFIX . $postType . $request->get('page', 1));

if (!$pagination->isHit()) {
    $data = getSomeData();

    $pagination->tag(
        [
            PostTypeDictionary::CACHE_MEDIA_PREFIX,
            PostTypeDictionary::CACHE_MEDIA_PREFIX . $postType,
        ]
    );
    $pagination->set($data);
    $cache->save($pagination);
} else {
    $data = $pagination->get();
}

В Redis я вижу две клавиши: 1) "zG3lSHyaSM: \ x00tags \ x00cache.media.01" 2) "zG3lSHyaSM: cache.media.01"

Первый содержит: "a:2:{s:12:\"cache.media.\";i:0;s:13:\"cache.media.0\";i:0;}"

Второй содержит данные

Затем я вызываю очистку кэша по тегам:

(new TagAwareAdapter($this->get('cache.app')))->invalidateTags([PostTypeDictionary::CACHE_MEDIA_PREFIX]);

Redis хранит еще один ключ "zG3lSHyaSM: cache.media. \ X00tags \ x00", который содержит: "i:1;"

И все, старый кеш доступен. У других адаптеров кеша такая же проблема. Что я делаю не так?

1 Ответ

0 голосов
/ 18 мая 2018

Я обнаружил, что компонент кэша Symfony содержит ошибку в последней версии (3.4.9). Я думаю, что это связано с https://github.com/symfony/cache/commit/51a9eef3091b2c06f63d8b1b98de9d101b5e0e77. Просто понижение до 3.4.8 решило эту проблему для меня.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...