yii2中查询缓存的使用和检测

版权声明:本文由版主林子懿亲自编写,请勿转载!php讨论群-511807472 https://blog.csdn.net/ldTrueLove/article/details/80436732
类似于闭包
建立在数据缓存之上的特殊缓存特性。用于缓存数据库查询的结果。
查询缓存需要建立一个数据库连接和一个有效的cache应用组件。基本语法
$result = $db->cache(function ($db) {

    // SQL 查询的结果将从缓存中提供
    // 如果启用查询缓存并且在缓存中找到查询结果
    return $db->createCommand('SELECT * FROM customer WHERE id=1')->queryOne();

});
查询缓存可以用在DAO和ActiveRecord上:
$result = Customer::getDb()->cache(function ($db) {
    return Customer::find()->where(['id' => 1])->one();
});
enableQueryCache:是否打开或关闭查询缓存。 它默认为 true。 请注意,要有效打开查询缓存, 您还需要有一个由 queryCache 所指定的有效缓存。
queryCacheDuration:这表示查询结果在缓存中保持有效的秒数。 您可以使用 0 来表示查询结果永久保留在缓存中。 该属性是在未指定持续时间的情况下调用 yii\db\Connection::cache() 使用的默认值。
queryCache:缓存应用组件的 ID。默认为 'cache'。 只有在设置了一个有效的缓存应用组件时,查询缓存才会有效。
使用这个的时候
return self::getDb()->cache(function(){
    return self::find()->all();
}, 36000); //缓存久点
注意:
查询结果中含有资源句柄的时候,查询缓存无法使用。例如,oracle中的clob和blob列的时候,缓存结果会为改列返回一个资源句柄。但是有写存储器有大小限制,比如memcache限制每条数据最大为1MB。所以缓存就会失败。

不能保存资源类型,资源类型只是一个引用,引用的对象没了你保存这个引用本身也没意义。

通过debug模式查看是否使用了数据缓存



查看执行查询数据库的时候 是否执行了SQL查询

猜你喜欢

转载自blog.csdn.net/ldTrueLove/article/details/80436732
今日推荐