0 关注者

接口 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
源代码 https://github.com/yiisoft/yii2/blob/master/framework/caching/CacheInterface.php

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

方法详情

隐藏继承的方法

add() 公共抽象方法

如果缓存不包含此键,则将一个由键标识的值存储到缓存中。

如果缓存已经包含该键,则不会执行任何操作。

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);

            
buildKey() 公共抽象方法

从给定的键构建规范化的缓存键。

如果给定的键是仅包含字母数字字符且不超过 32 个字符的字符串,则该键将以 keyPrefix 为前缀返回。否则,将通过序列化给定的键、应用 MD5 哈希以及以 keyPrefix 为前缀来生成规范化的键。

public abstract string buildKey ( $key )
$key 混合

要规范化的键

返回值 字符串

生成的缓存键

                public function buildKey($key);

            
delete() 公共抽象方法

从缓存中删除具有指定键的值。

public abstract boolean delete ( $key )
$key 混合

标识要从缓存中删除的值的键。这可以是一个简单的字符串或一个复杂的数据结构,该结构由表示键的因素组成。

返回值 布尔值

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

                public function delete($key);

            
exists() 公共抽象方法

检查缓存中是否存在指定的键。

如果数据量很大,这可能比从缓存中获取值更快。如果缓存本身不支持此功能,此方法将尝试模拟它,但性能不会比获取值有任何提升。请注意,此方法不会检查与缓存数据关联的依赖项(如果有)是否已更改。因此,调用 get() 可能会返回 false,而 exists 返回 true。

public abstract boolean exists ( $key )
$key 混合

标识缓存值的键。这可以是一个简单的字符串或一个由表示键的因素组成的复杂数据结构。

返回值 布尔值

如果缓存中存在值,则为 true;如果值不在缓存中或已过期,则为 false。

                public function exists($key);

            
flush() 公共抽象方法

删除缓存中的所有值。

如果缓存由多个应用程序共享,请小心执行此操作。

public abstract boolean flush ( )
返回值 布尔值

刷新操作是否成功。

                public function flush();

            
get() 公共抽象方法

使用指定的键从缓存中检索值。

public abstract mixed get ( $key )
$key 混合

标识缓存值的键。这可以是一个简单的字符串或一个由表示键的因素组成的复杂数据结构。

返回值 混合

存储在缓存中的值,如果值不在缓存中、已过期或与缓存数据关联的依赖项已更改,则为 false。

                public function get($key);

            
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 混合

标识要缓存的值的键。这可以是一个简单的字符串或一个复杂的数据结构,该结构由表示键的因素组成。

$callable callable|Closure

将用于生成要缓存的值的可调用对象或闭包。如果 $callable 返回 false,则不会缓存该值。

$duration integer|null

缓存过期前的默认秒数。如果未设置,将使用 defaultDuration 值。

$dependency yii\caching\Dependency|null

缓存项的依赖项。如果依赖项发生更改,则通过 get() 获取时,缓存中的相应值将失效。如果 serializerfalse,则忽略此参数。

返回值 混合

$callable 执行的结果

                public function getOrSet($key, $callable, $duration = null, $dependency = null);

            
multiAdd() 公共抽象方法

在缓存中存储多个项目。每个项目包含一个由键标识的值。

如果缓存中已存在此键,则将保留现有值和过期时间。

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);

            
multiGet() 公共抽象方法

使用指定的键从缓存中检索多个值。

某些缓存(例如 memcache、apc)允许同时检索多个缓存值,这可能会提高性能。如果缓存本身不支持此功能,此方法将尝试模拟它。

public abstract array multiGet ( $keys )
$keys 字符串[]

标识缓存值的字符串键列表

返回值 array

与指定键对应的缓存值列表。数组以 (键,值) 对的形式返回。如果值未缓存或已过期,则相应的数组值为 false。

                public function multiGet($keys);

            
multiSet() 公共抽象方法

在缓存中存储多个项目。每个项目包含一个由键标识的值。

如果缓存中已存在此键,则现有值和过期时间将分别替换为新值。

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);

            
set() 公共抽象方法

将一个由键标识的值存储到缓存中。

如果缓存中已存在此键,则现有值和过期时间将分别替换为新值。

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);