如何在yii2中刷新db查询缓存?

Yat*_*try 6 query-cache yii2

如何在特定表记录中发生某些更改时处理它?

public static function getAirportWithCache($iata_code){

              $result = Airports::getDb()->cache(function ($db) use ($iata_code){
                     $res = Airports::find()
                               ->where(['iata_code' => $iata_code])
                               ->limit(1)
                               ->asArray()
                               ->one();
                     return $res;
              });
              return $result;
        }
Run Code Online (Sandbox Code Playgroud)

Sur*_*dra 8

对于全局缓存,可以使用:

Yii::$app->cache->flush();
Run Code Online (Sandbox Code Playgroud)

对于特定的,您可以使用TagDependency:

 //way to use
return Yii::$app->db->cache(function(){
    $query =  new Query();
    return $query->all();
}, 0, new TagDependency(['tags'=>'cache_table_1']));

//way to flush when modify table
TagDependency::invalidate(Yii::$app->cache, 'cache_table_1');
Run Code Online (Sandbox Code Playgroud)

请参阅文档http://www.yiiframework.com/doc-2.0/yii-caching-tagdependency.html


Soh*_*edM 2

只需在任何地方执行Yii::$app->cache->flush();(可能在您的控制器中)

PS:它将删除服务器中存储的整个缓存

  • 这绝对不是解决方案,因为它会刷新您的整个缓存。这意味着查询缓存、rbac 缓存、模式缓存几乎所有内容,除非您附加了多个缓存组件...... (4认同)