Интерфейс yii\caching\CacheInterface
| Extends | ArrayAccess |
|---|---|
| Implemented by | 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, yii\mongodb\Cache, yii\redis\Cache |
| Available since version | 2.0.13. |
| Исходный код | https://github.com/yiisoft/yii2/blob/master/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'];
Для получения более подробной информации и информации об использовании кэша см. статью руководства по кэшированию.
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| 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, или для сохранения результата выполнения $callable, если для $key нет кэшированного значения. | yii\caching\CacheInterface |
| multiAdd() | Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом. | yii\caching\CacheInterface |
| multiGet() | Извлекает несколько значений из кэша по указанным ключам. | yii\caching\CacheInterface |
| multiSet() | Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом. | yii\caching\CacheInterface |
| set() | Сохраняет значение, идентифицируемое ключом, в кэше. | yii\caching\CacheInterface |
Подробное описание методов
add() public abstract method
Сохраняет значение, идентифицируемое ключом, в кэше, если этот ключ в кэше отсутствует.
Если ключ уже существует в кэше, ничего не делается.
| 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 ложно. |
| return | boolean |
Указывает, было ли успешно сохранено значение в кэше |
buildKey() public abstract method
Строит нормализованный ключ кэша из заданного ключа.
Если заданный ключ является строкой, содержащей только буквенно-цифровые символы и не более 32 символов, то ключ возвращается с префиксом \yii\caching\keyPrefix. В противном случае генерируется нормализованный ключ, путем сериализации заданного ключа, применения хеширования MD5 и добавления префикса \yii\caching\keyPrefix.
| public abstract string buildKey ( $key ) | ||
|---|---|---|
| $key | mixed |
Ключ, который нужно нормализовать |
| return | string |
Сгенерированный ключ кэша |
delete() public abstract method
Удаляет значение с указанным ключом из кэша
| public abstract boolean delete ( $key ) | ||
|---|---|---|
| $key | mixed |
Ключ, идентифицирующий значение, подлежащее удалению из кэша. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ. |
| return | boolean |
Результат, если удаление прошло без ошибок |
exists() public abstract method
Проверяет, существует ли указанный ключ в кэше.
Это может быть быстрее, чем получение значения из кэша, если данные объёмные. В случае, если кэш не поддерживает эту функцию напрямую, этот метод попытается смоделировать её, но не даст повышения производительности по сравнению с прямым получением. Обратите внимание, что этот метод не проверяет, изменилась ли зависимость, связанная с кэшированными данными. В результате вызов get() может вернуть false, в то время как exists вернёт true.
| public abstract boolean exists ( $key ) | ||
|---|---|---|
| $key | mixed |
Ключ, идентифицирующий кэшированное значение. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ. |
| return | boolean |
True, если значение существует в кэше, false — если значение отсутствует в кэше или истекло. |
flush() public abstract method
Удаляет все значения из кэша.
Будьте осторожны при выполнении этой операции, если кэш используется несколькими приложениями совместно.
| public abstract boolean flush ( ) | ||
|---|---|---|
| return | boolean |
Указывает, была ли успешной операция очистки кэша. |
get() public abstract method
Извлекает значение из кэша по заданному ключу.
| public abstract mixed get ( $key ) | ||
|---|---|---|
| $key | mixed |
Ключ, идентифицирующий кэшированное значение. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ. |
| return | mixed |
Значение, сохранённое в кэше; false, если значение не найдено в кэше, истекло или изменилась зависимость, связанная с кэшированными данными. |
getOrSet() public abstract method
Метод объединяет методы set() и get() для получения значения по ключу $key или для сохранения результата выполнения $callable, если для ключа $key в кэше нет данных.
Пример использования:
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(10)->all();
}, 1000);
}
| public abstract mixed getOrSet ( $key, $callable, $duration = null, $dependency = null ) | ||
|---|---|---|
| $key | mixed |
Ключ, идентифицирующий значение, подлежащее кэшированию. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ. |
| $callable | callable|Closure |
Выполняемый код или замыкание, которые будут использованы для генерации значения, подлежащего кэшированию. В случае, если $callable возвращает |
| $duration | integer |
Значение по умолчанию для периода времени в секундах, по истечении которого кэш истекает. Если не указано, используется значение \yii\caching\defaultDuration. |
| $dependency | yii\caching\Dependency |
Зависимость кэшируемого элемента. Если зависимость меняется, соответствующее значение в кэше будет аннулировано при получении с помощью get(). Этот параметр игнорируется, если \yii\caching\serializer ложно. |
| return | mixed |
Результат выполнения $callable |
multiAdd() public abstract method
Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом.
Если такой ключ уже существует в кэше, существующее значение и время истечения действия сохраняются.
| public abstract array multiAdd ( $items, $duration = 0, $dependency = null ) | ||
|---|---|---|
| $items | array |
Элементы, подлежащие кэшированию, в виде пар ключ-значение. |
| $duration | integer |
Количество секунд по умолчанию, в течение которых будут действительны кэшируемые значения. 0 означает, что значения никогда не истекают. |
| $dependency | yii\caching\Dependency |
Зависимость кэшируемых элементов. Если зависимость меняется, соответствующие значения в кэше будут аннулированы при извлечении через get(). Этот параметр игнорируется, если \yii\caching\serializer ложно. |
| return | array |
Массив ключей, для которых операция добавления не удалась |
multiGet() public abstract method
Извлекает несколько значений из кэша по заданным ключам.
Некоторые кэши (например, memcache, apc) позволяют одновременно извлекать несколько кэшированных значений, что может повысить производительность. Если кэш не поддерживает эту функцию напрямую, этот метод попытается смоделировать её.
| public abstract array multiGet ( $keys ) | ||
|---|---|---|
| $keys | string[] |
Список строковых ключей, идентифицирующих кэшированные значения. |
| return | array |
Список кэшированных значений, соответствующих указанным ключам. Массив возвращается в виде пар (ключ, значение). Если значение не кэшировано или истекло, соответствующее значение в массиве будет false. |
multiSet() public abstract method
Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом.
Если такой ключ уже существует в кэше, существующее значение и время истечения действия заменяются новыми значениями соответственно.
| 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 method
Сохраняет значение, идентифицируемое ключом, в кэше.
Если в кэше уже есть такой ключ, существующее значение и время истечения срока действия будут соответственно заменены новыми.
| 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 |
Успешно ли значение было сохранено в кэше |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-caching-cacheinterface.html