Как сбросить кэш Yii2?

Как сбросить такое кэширование?
$result = Customer::getDb()->cache(function ($db) use ($id) {
    return Customer::findOne($id);
}, 60 * 60 * 24 * 4);

хочется при обновлении записи сбросить кэш
  • Вопрос задан
  • 4100 просмотров
Решения вопроса 1
@akhur Автор вопроса
$data = $cache->getOrSet('customer' . $id, function ($db) use ($id) {
    return Customer::findOne($id);
}, 60 * 60 * 24 * 4);

потом удаление
$cache->delete('customer' . $id);
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
qonand
@qonand
Software Engineer
используйте yii\caching\DbDependency для определения факта изменения записи
Ответ написан
Комментировать
webinar
@webinar Куратор тега Yii
Учим yii: https://youtu.be/-WRMlGHLgRg
@Kar_mad_on
Лучше всего использовать Теги для этого кеша, так возможно сделать один смыв кеша для целой кучи ключей и запросов
$tag = 'Customer-' . $id;                           // готовим таг
  $ttl = 60 * 60 * 24 * 4;                            // готовим время жизни кеша

   $result = Customer::getDb()->cache(function ($db) use ($id) {
           return Customer::findOne($id);
   }, $ttl, new TagDependency(['tags' => $tag]));      // Пометка тагом данного кеша
                
 TagDependency::invalidate(Yii::$app->cache,$tag);   // Очистка всех кешей с данным тагом
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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