gpt4 book ai didi

php - 有没有办法使 Yii2 查询缓存记录无效/变脏?

转载 作者:可可西里 更新时间:2023-11-01 08:39:58 26 4
gpt4 key购买 nike

我在 Models with Redis 中使用最新的(2016 年 3 月)Yii2 的查询缓存机制:

$object = $db->cache(function ($db) use($id) {
return self::findOne($id);
});

因此,设置了一个具有 GUID ID(例如“bb83d06878206d758eda3e29082dda4f”)的条目来保存查询结果。

有没有办法在每次调用模型的保存方法时仅使该记录(基于 id)或整个模型的表无效?

例如如果保存了一条用户记录,我们想弄脏该用户的记录(或“用户”表),因此下次我们获取该用户时,缓存不再有效并从数据库中检索记录。

如果可能的话,我想避免 DbDependency(例如,在记录的“last_updated”字段上),因为如果我没记错的话,那是另一个数据库查询。

最佳答案

似乎要走的路是使用TagDependency .使用该标记,您可以在您认为合适时使缓存的查询无效。

您创建缓存查询并为其提供一个独特的标记,如下所示:

$object = $db->cache(function ($db) use($id) {
return self::findOne($id);
}, 0, new TagDependency(['tags' => 'myquerytag']));

然后当你想使它无效时,你可以像这样使用 TagDependency 的 'invalidate' 静态方法:

TagDependency::invalidate(Yii::$app->cache, 'myquerytag');

请记住,在本例中,我为该查询提供了 0 的缓存过期时间,就像在文档示例中一样,但您可以在您认为合适的任何时间提供它。

关于php - 有没有办法使 Yii2 查询缓存记录无效/变脏?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35806503/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com