接口 yii\caching\CacheInterface
CacheInterface 是缓存的基本接口。
可以通过调用 set() 将数据项存储在缓存中,并稍后(在相同或不同的请求中)通过 get() 检索回来。在这两种操作中,都需要一个标识数据项的键。在调用 set() 时,还可以指定过期时间和/或 依赖项。如果在调用 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'];
有关缓存的更多详细信息和使用信息,请参阅 缓存概述指南文章。
版本 | 描述 |
---|---|
2.0.13. | 以前的框架版本使用抽象类 [[yii\caching\Cache]] 作为接口。 |
公共方法
方法 | 描述 | 定义于 |
---|---|---|
add() | 如果缓存不包含此键,则将一个由键标识的值存储到缓存中。 | yii\caching\CacheInterface |
buildKey() | 从给定的键构建规范化的缓存键。 | yii\caching\CacheInterface |
delete() | 从缓存中删除具有指定键的值。 | yii\caching\CacheInterface |
exists() | 检查缓存中是否存在指定的键。 | 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() | 使用指定的键从缓存中检索多个值。 | yii\caching\CacheInterface |
multiSet() | 在缓存中存储多个项目。每个项目包含一个由键标识的值。 | yii\caching\CacheInterface |
set() | 将一个由键标识的值存储到缓存中。 | yii\caching\CacheInterface |
方法详情
如果缓存不包含此键,则将一个由键标识的值存储到缓存中。
如果缓存已经包含该键,则不会执行任何操作。
public abstract boolean add ( $key, $value, $duration = 0, $dependency = null ) | ||
$key | 混合 |
标识要缓存的值的键。这可以是一个简单的字符串或一个复杂的数据结构,该结构由表示键的因素组成。 |
$value | 混合 |
要缓存的值 |
$duration | 整数 |
缓存值将过期的秒数。0 表示永不过期。 |
$dependency | yii\caching\Dependency|null |
缓存项的依赖项。如果依赖项发生更改,则在通过 get() 获取时,缓存中的相应值将失效。如果 serializer 为 false,则忽略此参数。 |
返回值 | 布尔值 |
值是否成功存储到缓存中 |
---|
public function add($key, $value, $duration = 0, $dependency = null);
从给定的键构建规范化的缓存键。
如果给定的键是仅包含字母数字字符且不超过 32 个字符的字符串,则该键将以 keyPrefix 为前缀返回。否则,将通过序列化给定的键、应用 MD5 哈希以及以 keyPrefix 为前缀来生成规范化的键。
public abstract string buildKey ( $key ) | ||
$key | 混合 |
要规范化的键 |
返回值 | 字符串 |
生成的缓存键 |
---|
public function buildKey($key);
从缓存中删除具有指定键的值。
public abstract boolean delete ( $key ) | ||
$key | 混合 |
标识要从缓存中删除的值的键。这可以是一个简单的字符串或一个复杂的数据结构,该结构由表示键的因素组成。 |
返回值 | 布尔值 |
如果删除过程中没有发生错误 |
---|
public function delete($key);
检查缓存中是否存在指定的键。
如果数据量很大,这可能比从缓存中获取值更快。如果缓存本身不支持此功能,此方法将尝试模拟它,但性能不会比获取值有任何提升。请注意,此方法不会检查与缓存数据关联的依赖项(如果有)是否已更改。因此,调用 get() 可能会返回 false,而 exists 返回 true。
public abstract boolean exists ( $key ) | ||
$key | 混合 |
标识缓存值的键。这可以是一个简单的字符串或一个由表示键的因素组成的复杂数据结构。 |
返回值 | 布尔值 |
如果缓存中存在值,则为 true;如果值不在缓存中或已过期,则为 false。 |
---|
public function exists($key);
删除缓存中的所有值。
如果缓存由多个应用程序共享,请小心执行此操作。
public abstract boolean flush ( ) | ||
返回值 | 布尔值 |
刷新操作是否成功。 |
---|
public function flush();
使用指定的键从缓存中检索值。
public abstract mixed get ( $key ) | ||
$key | 混合 |
标识缓存值的键。这可以是一个简单的字符串或一个由表示键的因素组成的复杂数据结构。 |
返回值 | 混合 |
存储在缓存中的值,如果值不在缓存中、已过期或与缓存数据关联的依赖项已更改,则为 false。 |
---|
public function get($key);
该方法结合了 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 | 混合 |
标识要缓存的值的键。这可以是一个简单的字符串或一个复杂的数据结构,该结构由表示键的因素组成。 |
$callable | callable|Closure |
将用于生成要缓存的值的可调用对象或闭包。如果 $callable 返回 |
$duration | integer|null |
缓存过期前的默认秒数。如果未设置,将使用 defaultDuration 值。 |
$dependency | yii\caching\Dependency|null |
缓存项的依赖项。如果依赖项发生更改,则通过 get() 获取时,缓存中的相应值将失效。如果 serializer 为 |
返回值 | 混合 |
$callable 执行的结果 |
---|
public function getOrSet($key, $callable, $duration = null, $dependency = null);
在缓存中存储多个项目。每个项目包含一个由键标识的值。
如果缓存中已存在此键,则将保留现有值和过期时间。
public abstract array multiAdd ( $items, $duration = 0, $dependency = null ) | ||
$items | array |
要缓存的项,以键值对的形式表示。 |
$duration | 整数 |
缓存值将过期的默认秒数。0 表示永不过期。 |
$dependency | yii\caching\Dependency|null |
缓存项的依赖项。如果依赖项发生更改,则通过 get() 获取时,缓存中的相应值将失效。如果 serializer 为 false,则忽略此参数。 |
返回值 | array |
失败键的数组 |
---|
public function multiAdd($items, $duration = 0, $dependency = null);
使用指定的键从缓存中检索多个值。
某些缓存(例如 memcache、apc)允许同时检索多个缓存值,这可能会提高性能。如果缓存本身不支持此功能,此方法将尝试模拟它。
public abstract array multiGet ( $keys ) | ||
$keys | 字符串[] |
标识缓存值的字符串键列表 |
返回值 | array |
与指定键对应的缓存值列表。数组以 (键,值) 对的形式返回。如果值未缓存或已过期,则相应的数组值为 false。 |
---|
public function multiGet($keys);
在缓存中存储多个项目。每个项目包含一个由键标识的值。
如果缓存中已存在此键,则现有值和过期时间将分别替换为新值。
public abstract array multiSet ( $items, $duration = null, $dependency = null ) | ||
$items | array |
要缓存的项,以键值对的形式表示。 |
$duration | integer|null |
缓存过期前的默认秒数。如果未设置,将使用默认 defaultDuration 值。 |
$dependency | yii\caching\Dependency|null |
缓存项的依赖项。如果依赖项发生更改,则通过 get() 获取时,缓存中的相应值将失效。如果 serializer 为 false,则忽略此参数。 |
返回值 | array |
失败键的数组 |
---|
public function multiSet($items, $duration = null, $dependency = null);
将一个由键标识的值存储到缓存中。
如果缓存中已存在此键,则现有值和过期时间将分别替换为新值。
public abstract boolean set ( $key, $value, $duration = null, $dependency = null ) | ||
$key | 混合 |
标识要缓存的值的键。这可以是一个简单的字符串或一个复杂的数据结构,该结构由表示键的因素组成。 |
$value | 混合 |
要缓存的值 |
$duration | integer|null |
缓存过期前的默认秒数。如果未设置,将使用默认 defaultDuration 值。 |
$dependency | yii\caching\Dependency|null |
缓存项的依赖项。如果依赖项发生更改,则在通过 get() 获取时,缓存中的相应值将失效。如果 serializer 为 false,则忽略此参数。 |
返回值 | 布尔值 |
值是否成功存储到缓存中 |
---|
public function set($key, $value, $duration = null, $dependency = null);
请 注册 或 登录 以发表评论。