如何在yii2 AR中清除缓存?

时间:2017-05-22 04:34:14

标签: yii2

如何清除当前数据的缓存?

$result = Customer::getDb()->cache(function ($db) use ($id) {
    return Customer::findOne($id);
}, 60 * 60 * 24 * 4);

我想在更新后清除客户当前数据的缓存

2 个答案:

答案 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