如何清除当前数据的缓存?
$result = Customer::getDb()->cache(function ($db) use ($id) {
return Customer::findOne($id);
}, 60 * 60 * 24 * 4);
我想在更新后清除客户当前数据的缓存
答案 0 :(得分:7)
您可以修改此代码以使用数据缓存而不是查询缓存,以便您可以使用唯一密钥。
+---------------------------+---------------------------+
|min(days_since_prior_order)|max(days_since_prior_order)|
+---------------------------+---------------------------+
| 0.0| 9.0|
+---------------------------+---------------------------+
或从2.0.11开始:
$data = $cache->get('customer' . $id);
if ($data === false) {
$data = Customer::findOne($id);
$cache->set('customer' . $id, $data, 60 * 60 * 24 * 4);
}
所以现在你可以使用
$data = $cache->getOrSet('customer' . $id, function () use ($id) {
return Customer::findOne($id);
}, 60 * 60 * 24 * 4);
答案 1 :(得分:2)
您可以将flush
用于全局。
Yii::$app->cache->flush();
您可以使用TagDependency
:
$result = Customer::getDb()->cache(function ($db) use ($id) {
return Customer::findOne($id);
}, 60 * 60 * 24 * 4, new TagDependency(['tags'=>'customer']));
//to flush
TagDependency::invalidate(Yii::$app->cache, 'customer');
有关详细信息,请查看here