Spec-Zone.ru › Yii 2.0

Абстрактный класс yii\caching\Cache

Все классы | Свойства | Методы
Наследование yii\caching\Cache » yii\base\Component » yii\base\Object
Реализует yii\base\Configurable, yii\caching\CacheInterface
Подклассы yii\caching\ApcCache, yii\caching\ArrayCache, 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
Доступен с версии 2.0
Исходный код https://github.com/yiisoft/yii2/blob/master/framework/caching/Cache.php

Cache — базовый класс для классов кэширования, поддерживающих различные реализации хранения кэша.

Элемент данных может быть сохранен в кэше с помощью вызова set() и позже извлечен (в том же или другом запросе) с помощью get(). В обеих операциях требуется ключ, идентифицирующий элемент данных. Время истечения срока действия и/или зависимость также могут быть указаны при вызове set(). Если элемент данных истекает или зависимость изменяется во время вызова get(), кэш вернёт пустое значение.

Типичный шаблон использования кэша выглядит следующим образом:

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

Поскольку Cache реализует интерфейс ArrayAccess, его можно использовать как массив. Например,

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

Производные классы должны реализовать следующие методы, которые выполняют фактические операции хранения кэша:

  • getValue(): извлечение значения с ключом (если есть) из кэша
  • setValue(): сохранение значения с ключом в кэше
  • addValue(): сохранение значения только в том случае, если кэш не имеет этого ключа ранее
  • deleteValue(): удаление значения с заданным ключом из кэша
  • flushValues(): удаление всех значений из кэша

Более подробную информацию и сведения об использовании Cache можно найти в статье руководства по кэшированию.

Публичные свойства

Свойство Тип Описание Определено
$behaviors yii\base\Behavior[] Список присоединённых к этому компоненту поведений yii\base\Component
$defaultDuration целое число Срок действия по умолчанию в секундах, прежде чем запись кэша истечёт. yii\caching\Cache
$keyPrefix строка Строка, добавляемая в префикс к каждому ключу кэша, чтобы он был уникальным в целом хранилище кэша. yii\caching\Cache
$serializer null|массив|false Функции, используемые для сериализации и десериализации данных кэша. yii\caching\Cache

Публичные методы

Метод Описание Определено в
__call() Вызывает именованный метод, который не является методом класса. yii\base\Object
__clone() Этот метод вызывается после создания объекта путем клонирования существующего. yii\base\Component
__construct() Конструктор. yii\base\Object
__get() Возвращает значение свойства объекта. yii\base\Object
__isset() Проверяет, установлено ли свойство, т.е. определено и не равно null. yii\base\Object
__set() Устанавливает значение свойства объекта. yii\base\Object
__unset() Устанавливает свойство объекта в null. yii\base\Object
add() Сохраняет значение, идентифицируемое ключом, в кэше, если кэша с этим ключом нет. yii\caching\Cache
attachBehavior() Присоединяет поведение к компоненту. yii\base\Component
attachBehaviors() Присоединяет список поведений к компоненту. yii\base\Component
behaviors() Возвращает список поведений, по которым должен действовать этот компонент. yii\base\Component
buildKey() Создает нормализованный ключ кэша из заданного ключа. yii\caching\Cache
canGetProperty() Возвращает значение, указывающее, может ли свойство быть прочитано. yii\base\Object
canSetProperty() Возвращает значение, указывающее, может ли свойство быть установлено. yii\base\Object
className() Возвращает полное имя этого класса. yii\base\Object
delete() Удаляет значение с указанным ключом из кэша yii\caching\Cache
detachBehavior() Отсоединяет поведение от компонента. yii\base\Component
detachBehaviors() Отсоединяет все поведения от компонента. yii\base\Component
ensureBehaviors() Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. yii\base\Component
exists() Проверяет, существует ли указанный ключ в кэше. yii\caching\Cache
flush() Удаляет все значения из кэша. yii\caching\Cache
get() Извлекает значение из кэша с указанным ключом. yii\caching\Cache
getBehavior() Возвращает объект именованного поведения. yii\base\Component
getBehaviors() Возвращает все присоединённые к этому компоненту поведения. yii\base\Component
getOrSet() Метод объединяет методы set() и get(), чтобы получить значение, идентифицируемое ключом $key, или сохранить результат выполнения $callable, если для $key нет кэшированного значения. yii\caching\Cache
hasEventHandlers() Возвращает значение, указывающее, есть ли обработчик, присоединённый к указанному событию. yii\base\Component
hasMethod() Возвращает значение, указывающее, определен ли метод. yii\base\Object
hasProperty() Возвращает значение, указывающее, определено ли свойство. yii\base\Object
init() Инициализирует объект. yii\base\Object
madd() Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом. yii\caching\Cache
mget() Извлекает несколько значений из кэша по указанным ключам. yii\caching\Cache
mset() Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом. yii\caching\Cache
multiAdd() Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом. yii\caching\Cache
multiGet() Извлекает несколько значений из кэша по указанным ключам. yii\caching\Cache
multiSet() Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом. yii\caching\Cache
off() Отсоединяет существующий обработчик событий от этого компонента. yii\base\Component
offsetExists() Возвращает, есть ли запись в кэше с указанным ключом. yii\caching\Cache
offsetGet() Извлекает значение из кэша с указанным ключом. yii\caching\Cache
offsetSet() Сохраняет значение, идентифицируемое ключом, в кэше. yii\caching\Cache
offsetUnset() Удаляет значение с указанным ключом из кэша. Этот метод требуется интерфейсом ArrayAccess. yii\caching\Cache
on() Присоединяет обработчик событий к событию. yii\base\Component
set() Сохраняет значение, идентифицируемое ключом, в кэше. yii\caching\Cache
trigger() Вызывает событие. yii\base\Component

Защищенные методы

Метод Описание Определено в
addValue() Сохраняет значение, идентифицируемое ключом, в кэше, если этот ключ в кэше отсутствует. yii\caching\Cache
addValues() Добавляет несколько пар ключ-значение в кэш. yii\caching\Cache
deleteValue() Удаляет значение с указанным ключом из кэша. Этот метод должен быть реализован дочерними классами для удаления данных из фактического хранилища кэша. yii\caching\Cache
flushValues() Удаляет все значения из кэша. yii\caching\Cache
getValue() Извлекает значение из кэша по указанному ключу. yii\caching\Cache
getValues() Извлекает несколько значений из кэша по указанным ключам. yii\caching\Cache
setValue() Сохраняет значение, идентифицируемое ключом, в кэше. yii\caching\Cache
setValues() Сохраняет несколько пар ключ-значение в кэше. yii\caching\Cache

Подробное описание свойств

$defaultDuration общедоступное свойство (доступно начиная с версии 2.0.11)

Значение по умолчанию в секундах до истечения срока действия записи кэша. Значение по умолчанию — 0, что означает бесконечность. Это значение используется методом set(), если срок действия явно не задан.

public integer $defaultDuration = 0

$keyPrefix общедоступное свойство

Строка-префикс, добавляемая к каждому ключу кэша, чтобы он был уникальным во всем хранилище кэша. Рекомендуется устанавливать уникальный префикс ключа кэша для каждого приложения, если одно и то же хранилище кэша используется разными приложениями.

Для обеспечения межсовместимости следует использовать только буквенно-цифровые символы.

public string $keyPrefix = null

$serializer общедоступное свойство

Функции, используемые для сериализации и десериализации данных кэша. По умолчанию null, что означает использование стандартных PHP serialize() и unserialize() функций. Если вы хотите использовать более эффективный сериализатор (например, igbinary), вы можете настроить это свойство массивом из двух элементов. Первый элемент — функция сериализации, второй — десериализации. Если это свойство установлено в false, данные будут напрямую отправляться в подчинённый компонент кэша и извлекаться из него без сериализации и десериализации. Не следует отключать сериализацию, если вы используете зависимость кэша, так как она опирается на сериализацию данных. Кроме того, некоторые реализации кэша не могут корректно сохранять и извлекать данные, отличные от строкового типа.

public null|array|false $serializer = null

Подробное описание методов

add() public method

Сохраняет значение, идентифицируемое ключом, в кэше, если в кэше этот ключ отсутствует.

Если ключ уже присутствует в кэше, никаких действий не выполняется.

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

Ключ, идентифицирующий значение для кэширования. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ.

$value mixed

Значение для кэширования

$duration integer

Количество секунд, в течение которых значение кэша будет действовать. 0 означает, что значение никогда не истечет.

$dependency yii\caching\Dependency

Зависимость кэшируемого элемента. Если зависимость изменится, соответствующее значение в кэше будет недействительным при его получении с помощью get(). Этот параметр игнорируется, если $serializer имеет значение false.

return boolean

Указывает, успешно ли значение было сохранено в кэше

addValue() protected abstract method

Сохраняет значение, идентифицируемое ключом, в кэше, если в кэше этот ключ отсутствует.

Этот метод должен быть реализован дочерними классами для хранения данных в конкретном хранилище кэша.

protected abstract boolean addValue ( $key, $value, $duration )
$key string

Ключ, идентифицирующий значение для кэширования

$value mixed

Значение для кэширования. Чаще всего это строка. Если вы отключили $serializer, это может быть что-то другое.

$duration integer

Количество секунд, в течение которых значение кэша будет действовать. 0 означает, что значение никогда не истечет.

return boolean

True, если значение успешно сохранено в кэше, false в противном случае

addValues() protected method

Добавляет несколько пар ключ-значение в кэш.

Базовая реализация многократно вызывает addValue() для добавления значений по одному. Если хранилище кэша поддерживает многократное добавление, этот метод следует переопределить, чтобы использовать эту возможность.

protected array addValues ( $data, $duration )
$data array

Массив, где ключ соответствует ключу кэша, а значение — хранимому значению.

$duration integer

Количество секунд, в течение которых кэшированные значения будут действовать. 0 означает, что значения никогда не истекут.

return array

Массив неудачных ключей

buildKey() public method

Создаёт нормализованный ключ кэша из заданного ключа.

Если заданный ключ — это строка, содержащая только буквенно-цифровые символы и не более 32 символов, то ключ будет возвращён обратно с префиксом $keyPrefix. В противном случае генерируется нормализованный ключ путём сериализации заданного ключа, применения хэширования MD5 и добавления префикса $keyPrefix.

public string buildKey ( $key )
$key mixed

Ключ для нормализации

return string

Сгенерированный ключ кэша

delete() public method

Удаляет значение с заданным ключом из кэша

public boolean delete ( $key )
$key mixed

Ключ, идентифицирующий значение для удаления из кэша. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ.

return boolean

Результат успешного удаления

deleteValue() protected abstract method

Удаляет значение с указанным ключом из кэша. Этот метод должен быть реализован дочерними классами для удаления данных из фактического хранилища кэша.

protected abstract boolean deleteValue ( $key )
$key string

Ключ удаляемого значения

return boolean

Результат успешного удаления

exists() public method

Проверяет, существует ли в кэше указанный ключ.

Это может быть быстрее, чем получение значения из кэша, если данные объёмные. Если кэш не поддерживает эту функцию напрямую, этот метод попытается смоделировать её, но не улучшает производительность по сравнению с получением значения. Обратите внимание, что этот метод не проверяет, изменилась ли зависимость, связанная с кэшированными данными (если таковая есть). Поэтому вызов get() может вернуть false, в то время как exists вернёт true.

public boolean exists ( $key )
$key mixed

Ключ, идентифицирующий кэшированное значение. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ.

return boolean

True, если значение существует в кэше, false — если значение отсутствует в кэше или истекло.

flush() public method

Удаляет все значения из кэша.

Будьте осторожны при выполнении этой операции, если кэш используется несколькими приложениями.

public boolean flush ( )
return boolean

Указывает, была ли операция сброса выполнена успешно.

flushValues() protected abstract method

Удаляет все значения из кэша.

Дочерние классы могут реализовать этот метод для выполнения операции сброса.

protected abstract boolean flushValues ( )
return boolean

Указывает, была ли операция сброса выполнена успешно.

get() public method

Получает значение из кэша по указанному ключу.

public mixed get ( $key )
$key mixed

Ключ, идентифицирующий кэшированное значение. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ.

return mixed

Значение, хранящееся в кэше; false, если значение не найдено в кэше, истекло или изменилась зависимость, связанная с кэшированными данными.

getOrSet() public method (доступно начиная с версии 2.0.11)

Метод сочетает в себе методы 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 mixed getOrSet ( $key, $callable, $duration = null, $dependency = null )
$key mixed

Ключ, идентифицирующий значение для кэширования. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ.

$callable callable|Closure

Callable или замыкание, которое будет использоваться для генерации значения для кэширования. Если $callable возвращает false, значение не будет кэшироваться.

$duration integer

Значение по умолчанию для срока действия кэша в секундах. Если не указано, используется значение $defaultDuration.

$dependency yii\caching\Dependency

Зависимость кэшируемого элемента. Если зависимость изменится, соответствующее значение в кэше будет недействительным при получении с помощью get(). Этот параметр игнорируется, если $serializer имеет значение false.

return mixed

Результат выполнения $callable

getValue() protected abstract method

Извлекает значение из кэша с указанным ключом.

Этот метод должен быть реализован дочерними классами для извлечения данных из конкретного хранилища кэша.

protected abstract mixed|false getValue ( $key )
$key string

Уникальный ключ, идентифицирующий кэшированное значение

return mixed|false

Значение, хранящееся в кэше, false, если значение отсутствует в кэше или истекло. Чаще всего значением является строка. Если вы отключили $serializer, это может быть что-то другое.

getValues() protected method

Извлекает несколько значений из кэша с указанными ключами.

Реализация по умолчанию вызывает getValue() несколько раз, чтобы извлечь кэшированные значения по одному. Если базовое хранилище кэша поддерживает multiget, этот метод должен быть переопределен, чтобы использовать эту функцию.

protected array getValues ( $keys )
$keys array

Список ключей, идентифицирующих кэшированные значения

return array

Список кэшированных значений с индексами по ключам

madd() public method

Устарел. Этот метод является псевдонимом для multiAdd() и будет удален в версии 2.1.0.

Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом.

Если кэш уже содержит такой ключ, существующее значение и время истечения срока действия будут сохранены.

public array madd ( $items, $duration = 0, $dependency = null )
$items array

Элементы для кэширования в виде пар ключ-значение.

$duration integer

Умолчательное количество секунд, в течение которых будут истекать кэшированные значения. 0 означает, что срок действия никогда не истекает.

$dependency yii\caching\Dependency

Зависимость кэшированных элементов. Если зависимость изменяется, соответствующие значения в кэше будут аннулированы при извлечении через get(). Этот параметр игнорируется, если $serializer имеет значение false.

return array

Массив неудачных ключей

mget() public method

Устарел. Этот метод является псевдонимом для multiGet() и будет удален в версии 2.1.0.

Извлекает несколько значений из кэша с указанными ключами.

Некоторые кэши (например, memcache, apc) позволяют извлекать несколько кэшированных значений одновременно, что может повысить производительность. Если кэш не поддерживает эту функцию нативно, этот метод попытается её симулировать.

public array mget ( $keys )
$keys string[]

Список строковых ключей, идентифицирующих кэшированные значения

return array

Список кэшированных значений, соответствующих указанным ключам. Массив возвращается в виде пар (ключ, значение). Если значение не кэшировано или истекло, соответствующее значение массива будет false.

mset() public method

Устарел. Этот метод является псевдонимом для multiSet() и будет удален в версии 2.1.0.

Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом.

Если кэш уже содержит такой ключ, существующее значение и время истечения срока действия будут заменены новыми.

public array mset ( $items, $duration = 0, $dependency = null )
$items array

Элементы для кэширования в виде пар ключ-значение.

$duration integer

Умолчательное количество секунд, в течение которых будут истекать кэшированные значения. 0 означает, что срок действия никогда не истекает.

$dependency yii\caching\Dependency

Зависимость кэшированных элементов. Если зависимость изменяется, соответствующие значения в кэше будут аннулированы при извлечении через get(). Этот параметр игнорируется, если $serializer имеет значение false.

return array

Массив неудачных ключей

multiAdd() public method (available since version 2.0.7)

Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом.

Если кэш уже содержит такой ключ, существующее значение и время истечения срока действия будут сохранены.

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

Элементы для кэширования в виде пар ключ-значение.

$duration integer

Умолчательное количество секунд, в течение которых будут истекать кэшированные значения. 0 означает, что срок действия никогда не истекает.

$dependency yii\caching\Dependency

Зависимость кэшированных элементов. Если зависимость изменяется, соответствующие значения в кэше будут аннулированы при извлечении через get(). Этот параметр игнорируется, если $serializer имеет значение false.

return array

Массив неудачных ключей

multiGet() public method (available since version 2.0.7)

Извлекает несколько значений из кэша с указанными ключами.

Некоторые кэши (например, memcache, apc) позволяют извлекать несколько кэшированных значений одновременно, что может повысить производительность. Если кэш не поддерживает эту функцию нативно, этот метод попытается её симулировать.

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

Список строковых ключей, идентифицирующих кэшированные значения

return array

Список кэшированных значений, соответствующих указанным ключам. Массив возвращается в виде пар (ключ, значение). Если значение не кэшировано или истекло, соответствующее значение массива будет false.

multiSet() public method (available since version 2.0.7)

Сохраняет несколько элементов в кэше. Каждый элемент содержит значение, идентифицируемое ключом.

Если кэш уже содержит такой ключ, существующее значение и время истечения срока действия будут заменены новыми.

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

Элементы для кэширования в виде пар ключ-значение.

$duration integer

Умолчательное количество секунд, в течение которых будут истекать кэшированные значения. 0 означает, что срок действия никогда не истекает.

$dependency yii\caching\Dependency

Зависимость кэшированных элементов. Если зависимость изменяется, соответствующие значения в кэше будут аннулированы при извлечении через get(). Этот параметр игнорируется, если $serializer имеет значение false.

return array

Массив неудачных ключей

offsetExists() public method

Возвращает, существует ли запись кэша с указанным ключом.

Этот метод необходим для интерфейса ArrayAccess.

public boolean offsetExists ( $key )
$key string

Ключ, идентифицирующий кэшированное значение

offsetGet() public method

Извлекает значение из кэша с указанным ключом.

Этот метод необходим для интерфейса ArrayAccess.

public mixed offsetGet ( $key )
$key string

Ключ, идентифицирующий кэшированное значение

return mixed

Значение, хранящееся в кэше, false, если значение отсутствует в кэше или истекло.

offsetSet() общедоступный метод

Сохраняет значение, идентифицируемое ключом, в кэше.

Если в кэше уже существует такой ключ, существующее значение будет заменено новым. Для добавления срока действия и зависимостей используйте метод set(). Этот метод требуется интерфейсом ArrayAccess.

общедоступный void offsetSet ( $key, $value )
$key строка

Ключ, идентифицирующий значение для кэширования

$value смешанный тип

Значение для кэширования

offsetUnset() общедоступный метод

Удаляет значение с указанным ключом из кэша. Этот метод требуется интерфейсом ArrayAccess.

общедоступный void offsetUnset ( $key )
$key строка

Ключ значения, подлежащего удалению

set() общедоступный метод

Сохраняет значение, идентифицируемое ключом, в кэше.

Если в кэше уже существует такой ключ, существующее значение и срок действия будут заменены соответственно новыми.

общедоступный булево set ( $key, $value, $duration = null, $dependency = null )
$key смешанный тип

Ключ, идентифицирующий значение для кэширования. Это может быть простая строка или сложная структура данных, состоящая из факторов, представляющих ключ.

$value смешанный тип

Значение для кэширования

$duration целое число

Срок действия по умолчанию в секундах, по истечении которого кэш истечёт. Если не задано, используется значение по умолчанию $defaultDuration.

$dependency yii\caching\Dependency

Зависимость кэшированного элемента. Если зависимость изменяется, соответствующее значение в кэше будет аннулировано при его извлечении через get(). Этот параметр игнорируется, если $serializer равен false.

возвращает булево

Является ли значение успешно сохранённым в кэше

setValue() защищённый абстрактный метод

Сохраняет значение, идентифицируемое ключом, в кэше.

Этот метод должен быть реализован дочерними классами для хранения данных в конкретном хранилище кэша.

защищённый абстрактный булево setValue ( $key, $value, $duration )
$key строка

Ключ, идентифицирующий значение для кэширования

$value смешанный тип

Значение для кэширования. Чаще всего это строка. Если $serializer отключён, это может быть что-то другое.

$duration целое число

Количество секунд, в течение которых кэшированное значение будет действовать. 0 означает, что срок действия не ограничен.

возвращает булево

True, если значение успешно сохранено в кэше, иначе false

setValues() защищённый метод

Сохраняет несколько пар ключ-значение в кэше.

Реализация по умолчанию вызывает setValue() несколько раз, чтобы хранить значения по одному. Если хранилище кэша поддерживает многократную установку, этот метод должен быть переопределён, чтобы использовать эту функцию.

защищённый массив setValues ( $data, $duration )
$data массив

Массив, где ключ соответствует ключу кэша, а значение — хранимому значению

$duration целое число

Количество секунд, в течение которых кэшированные значения будут действовать. 0 означает, что срок действия не ограничен.

возвращает массив

Массив неудачных ключей

© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-caching-cache.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API