@epimaster

Как вывести список кэшей или тегов кэширования в Yii2?

Есть отчёты по отчётным датам, на каждую дату я создаю кеш.
Yii::$app->cache->set('report_'.$_GET['DATE_REPORT'].'', $sql, 3600); // ключ 'report_'.$_GET['DATE_REPORT'].''

или
Yii::$app->cache->set('report_'.$_GET['DATE_REPORT'].'', $sql, 3600, new TagDependency(['tags' => 'report_'.$_GET['DATE_REPORT'].''])); // ключ и тег 'report_'.$_GET['DATE_REPORT'].''


Юзера запрашивают отчёты по разным датам. Тем самым создаются кеши с соответствующими ключами.

Например, у нас есть 4 кеша за 01.06.2018, 10.06, 19.06, 20.06.
Есть функционал, в котором юзера могут изменять данные в отчёте за прошлые даты.
Таким образом, если юзер изменит отчёт за 10.06.2018, то мне нужно удалить кеш отчёта за 10.06.2018 и за 19.06, 20.06, т.к. данные более не актуальны. Но не за 01.06, т.к. отчётная дата еще не наступила.

Как мне узнать какие уже есть ключи(теги) кеша для корректного удаления нужных кешей?

Другой пример, я записываю группы данных в кеш с разным тегом:
Yii::$app->cache->set('user_42_profile', 'key1', 1000, new TagDependency(['tags' => 'report-123']));
Yii::$app->cache->set('user_42_stats', 'key2', 1000, new TagDependency(['tags' => 'report-123']));

Yii::$app->cache->set('admin_42_profile, 'key3', 1000, new TagDependency(['tags' => 'super-123']));
Yii::$app->cache->set('admin_42_stats', 'key4', 1000, new TagDependency(['tags' => 'super-123']));


Как мне посмотреть какие теги есть? (название тега)
Это нужно чтобы потом по определенному тегу удалить кеш:
TagDependency::invalidate(Yii::$app->cache, 'report-123');
  • Вопрос задан
  • 354 просмотра
Пригласить эксперта
Ответы на вопрос 1
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
Вас не смущает, что Вы кеш не по назначению используете? Кеш это на БД. Кеш должен зависеть от актуальности данных, а не от желаний юзера.
Актуальность проверяется в момент получения доступа к данным с определенным ключом. Не должен он удалять еще что-то. Еще что-то когда будет запрошено, должно понимать актуально оно или нет.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы