версия 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;"
И все, старый кеш доступен.
У других адаптеров кеша такая же проблема.
Что я делаю не так?