没有命名空间的类 yii yii\base yii\behaviors yii\caching yii\captcha yii\console yii\console\controllers yii\console\widgets yii\data yii\db yii\db\conditions yii\db\cubrid yii\db\cubrid\conditions yii\db\mssql yii\db\mssql\conditions yii\db\mysql yii\db\oci yii\db\oci\conditions yii\db\pgsql yii\db\sqlite yii\db\sqlite\conditions yii\di yii\filters yii\filters\auth yii\grid yii\helpers yii\i18n yii\log yii\mail yii\mutex yii\rbac yii\rest yii\test yii\validators yii\web yii\widgets

Interface yii\caching\CacheInterface

继承ArrayAccess
实现yii\caching\ApcCache, yii\caching\ArrayCache, yii\caching\Cache, yii\caching\DbCache, yii\caching\DummyCache, yii\caching\FileCache, yii\caching\MemCache, yii\caching\WinCache, yii\caching\XCache, yii\caching\ZendDataCache
可用版本自2.0.13.
源码 https://github.com/yiichina/yii2/blob/api/framework/caching/CacheInterface.php

CacheInterface 是缓存的基础接口。

数据可以通过调用 set() 方法存入缓存中,而后(在同一个请求或不同的请求)可以调用 get() 方法再次获得这个数据。在这两个操作中, 需要一个指明缓存数据的键。调用 set() 方法时还可以传递过期时间和 dependency 缓存依赖。如果在调用 get() 方法时缓存时间过期或者缓存依赖发生变化, 那么缓存不会返回数据。

典型的缓存使用模式就像下面这样:

$key = 'demo';
$data = $cache->get($key);
if ($data === false) {
    // ...generate $data here...
    $cache->set($key, $data, $duration, $dependency);
}

因为 CacheInterface 继承了 ArrayAccess 接口,可以像数组那样使用它,比如,

$cache['foo'] = 'some data';
echo $cache['foo'];

在 Cache 上更多的详情和详细的使用信息,请参考 guide article on caching

公共方法

隐藏继承的方法

方法描述被定义在
add() 如果对应缓存键不存在,那么把由它指明的缓存数据存入缓存中, 如果缓存键存在,那么什么也不会做。 yii\caching\CacheInterface
buildKey() 根据给定的字符串构建一个标准化的缓存键。 yii\caching\CacheInterface
delete() 根据指定的键从缓存中删除数据值。 yii\caching\CacheInterface
exists() 检测指定的键是否存在缓存中。 如果缓存数据量大的话,这比从缓存中直接获取值稍快些。 如果当前环境的缓存系统不支持该特性,该方法将会尝试模拟实现该特性, 但是相比直接从缓存中获取数据在性能上没有什么提高。 注意,缓存数据如果有关联的依赖存在,并且确实发生了变化, 但是该方法不会检测缓存依赖的变化情况。所以有可能调用 get() 方法返回 false, 而调用该方法返回 true。 yii\caching\CacheInterface
flush() 从缓存中删除所有的值。 如果缓存系统在多个应用中共享的话,请谨慎执行该操作。 yii\caching\CacheInterface
get() 根据指定的键从缓存中获取数据。 yii\caching\CacheInterface
getOrSet() 联合了 set()get() 两个方法的大方法,可以根据 $key 获取值, 或者在 $key 对应的缓存数据不存在的情况下,存入 $callable 执行后的结果作为缓存数据。 yii\caching\CacheInterface
multiAdd() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果缓存中已经存在了对应的键,那么这个存在的缓存值和过期时间将会继续保留。 yii\caching\CacheInterface
multiGet() 根据多个缓存的键一次从缓存中获取多个对应的缓存数据。 一些缓存驱动(比如 memcache,apc)允许一次性获取多个缓存数据,这无疑会提高性能。 如果当前环境的缓存系统不支持该特性的话, 该方法也会尝试模拟实现。 yii\caching\CacheInterface
multiSet() 存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\CacheInterface
set() 根据键存入缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。 yii\caching\CacheInterface

方法详情

add() 公共 抽象 方法

如果对应缓存键不存在,那么把由它指明的缓存数据存入缓存中, 如果缓存键存在,那么什么也不会做。

public abstract boolean add($key, $value, $duration 0, $dependency null)
$key mixed

指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

$value mixed

要缓存的值。

$duration integer

缓存数据过期的秒数,0 意味着永不过期。

$dependency yii\caching\Dependency

缓存数据的依赖。如果依赖发生变化, 那么使用 get() 方法获取对应的缓存数据时将是无效的。 如果 \yii\caching\serializer 是 false 的话,该参数将会被忽略。

return boolean

数据是否成功存入缓存。

buildKey() 公共 抽象 方法

根据给定的字符串构建一个标准化的缓存键。

如果给定的字符串只包含字母和数字,且长度不超过 32 个字符, 那么缓存键就是增加了 \yii\caching\keyPrefix 前缀的字符串。否则,给定的字符串 会经过序列化,应用 MD5 散列,然后再增加 \yii\caching\keyPrefix 前缀生成标准的缓存键。

public abstract string buildKey($key)
$key mixed

需要标准化的键。

return string

生成的缓存键。

delete() 公共 抽象 方法

根据指定的键从缓存中删除数据值。

public abstract boolean delete($key)
$key mixed

指明要删除的缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

return boolean

如果删除过程没有发生错误。

exists() 公共 抽象 方法

检测指定的键是否存在缓存中。 如果缓存数据量大的话,这比从缓存中直接获取值稍快些。 如果当前环境的缓存系统不支持该特性,该方法将会尝试模拟实现该特性, 但是相比直接从缓存中获取数据在性能上没有什么提高。 注意,缓存数据如果有关联的依赖存在,并且确实发生了变化, 但是该方法不会检测缓存依赖的变化情况。所以有可能调用 get() 方法返回 false, 而调用该方法返回 true。

public abstract boolean exists($key)
$key mixed

指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

return boolean

如果缓存值存在返回 true,如果缓存值不存在或者已经过期则返回 false。

flush() 公共 抽象 方法

从缓存中删除所有的值。 如果缓存系统在多个应用中共享的话,请谨慎执行该操作。

public abstract boolean flush()
return boolean

是否冲刷缓存过程是成功地。

get() 公共 抽象 方法

根据指定的键从缓存中获取数据。

public abstract mixed get($key)
$key mixed

指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

return mixed

缓存中的值,如果缓存值不存在, 缓存已经过期或者和缓存数据相关的缓存依赖发生了变化则返回 false。

getOrSet() 公共 抽象 方法

联合了 set()get() 两个方法的大方法,可以根据 $key 获取值, 或者在 $key 对应的缓存数据不存在的情况下,存入 $callable 执行后的结果作为缓存数据。

使用实例:

public function getTopProducts($count = 10) {
    $cache = $this->cache; // Could be Yii::$app->cache
    return $cache->getOrSet(['top-n-products', 'n' => $count], function ($cache) use ($count) {
        return Products::find()->mostPopular()->limit($count)->all();
    }, 1000);
}
public abstract mixed getOrSet($key, $callable, $duration null, $dependency null)
$key mixed

指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

$callable callable|Closure

用来生成缓存数据的回调或者匿名函数。 如果 $callable 返回 false,那么不会缓存该值。

$duration integer

以秒为单位的缓存数据的过期时间,如果没有传递该参数, 默认使用 \yii\caching\defaultDuration

$dependency yii\caching\Dependency

缓存数据的依赖。如果依赖发生变化, 那么使用 get() 方法获取对应的缓存数据时将是无效的。 如果 \yii\caching\serializerfalse 的话,该参数将会被忽略。

return mixed

$callable 的执行结果。

multiAdd() 公共 抽象 方法

存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果缓存中已经存在了对应的键,那么这个存在的缓存值和过期时间将会继续保留。

public abstract array multiAdd($items, $duration 0, $dependency null)
$items array

要缓存的数据项,作为键值对。

$duration integer

缓存数据过期的秒数,0 意味着永不过期。

$dependency yii\caching\Dependency

缓存数据的依赖。如果依赖发生变化, 那么使用 get() 方法获取对应的缓存数据时将是无效的。 如果 \yii\caching\serializer 是 false 的话,该参数将会被忽略。

return array

未能存入缓存的键列表。

multiGet() 公共 抽象 方法

根据多个缓存的键一次从缓存中获取多个对应的缓存数据。 一些缓存驱动(比如 memcache,apc)允许一次性获取多个缓存数据,这无疑会提高性能。 如果当前环境的缓存系统不支持该特性的话, 该方法也会尝试模拟实现。

public abstract array multiGet($keys)
$keys string[]

指明多个缓存数据的字符串键列表。

return array

对应缓存键列表的缓存数据,返回的数组格式是 (key, value)键值对。 如果缓存值不存在或者缓存过期,那么对应的缓存值将会是 false。

multiSet() 公共 抽象 方法

存入多个数据到缓存中。每个数据项都包含缓存键和对应的缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。

public abstract array multiSet($items, $duration 0, $dependency null)
$items array

要缓存的数据项,作为键值对。

$duration integer

缓存数据过期的秒数,0 意味着永不过期。

$dependency yii\caching\Dependency

缓存数据的依赖。如果依赖发生变化, 那么使用 get() 方法获取对应的缓存数据时将是无效的。 如果 \yii\caching\serializer 是 false 的话,该参数将会被忽略。

return array

未能存入缓存的键列表。

set() 公共 抽象 方法

根据键存入缓存值。 如果相同的键已经存在缓存中,那么之前的缓存数据和过期时间, 将会被新的缓存数据和缓存时间分别替换。

public abstract boolean set($key, $value, $duration null, $dependency null)
$key mixed

指明缓存值的键。可以是一个简单的字符串, 或者是一个包含着缓存键的复杂数据结构。

$value mixed

要缓存的值。

$duration integer

以秒为单位的缓存数据的过期时间,如果没有传递该参数, 默认使用 \yii\caching\defaultDuration

$dependency yii\caching\Dependency

缓存数据的依赖。如果依赖发生变化, 那么使用 get() 方法获取对应的缓存数据时将是无效的。 如果 \yii\caching\serializer 是 false 的话,该参数将会被忽略。

return boolean

数据是否成功存入缓存。