CRedisCache
| Пакет | system.caching |
|---|---|
| Наследование | class CRedisCache » CCache » CApplicationComponent » CComponent |
| Реализует | ArrayAccess, ICache, IApplicationComponent |
| С версии | 1.1.14 |
| Исходный код | framework/caching/CRedisCache.php |
CRedisCache необходимо настроить с указанием имени хоста, порта и базы данных сервера для подключения. По умолчанию CRedisCache предполагает, что сервер redis работает на localhost по порту 6379 и использует базу данных номер 0.
CRedisCache также поддерживает команду AUTH redis. Если для сервера требуется авторизация, вы можете установить свойство password для аутентификации с сервером после подключения.
См. руководство по CCache для общих операций с кэшем, поддерживаемых CRedisCache.
Чтобы использовать CRedisCache в качестве компонента приложения кэша, настройте приложение следующим образом,
array(
'components'=>array(
'cache'=>array(
'class'=>'CRedisCache',
'hostname'=>'localhost',
'port'=>6379,
'database'=>0,
'options'=>STREAM_CLIENT_CONNECT,
),
),
)
Минимальная требуемая версия redis — 2.0.0.
Свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| behaviors | array | поведения, которые должны быть присоединены к данному компоненту. | CApplicationComponent |
| database | int | база данных redis для использования. | CRedisCache |
| hashKey | boolean | использовать ли md5-хеширование ключа кэша для нормализации. | CCache |
| hostname | string | имя хоста для подключения к серверу redis. | CRedisCache |
| isInitialized | boolean | Проверяет, был ли инициализирован компонент приложения. | CApplicationComponent |
| keyPrefix | string | строка, добавляемая в префикс к каждому ключу кэша, для обеспечения уникальности. | CCache |
| options | int | параметры для передачи параметру flags функции stream_socket_client при подключении к серверу redis. | CRedisCache |
| password | string | пароль для аутентификации с сервером redis. | CRedisCache |
| port | int | порт для подключения к серверу redis. | CRedisCache |
| serializer | array|boolean | функции для сериализации и десериализации данных кэша. | CCache |
| timeout | float | таймаут для подключения к redis. | CRedisCache |
Публичные методы
| Метод | Описание | Определено в |
|---|---|---|
| __call() | Вызывает именованный метод, который не является методом класса. | CComponent |
| __get() | Возвращает значение свойства, список обработчиков событий или поведение на основе его имени. | CComponent |
| __isset() | Проверяет, является ли значение свойства null. | CComponent |
| __set() | Устанавливает значение свойства компонента. | CComponent |
| __unset() | Устанавливает свойство компонента в null. | CComponent |
| add() | Сохраняет значение, идентифицируемое ключом, в кэше, если в кэше нет этого ключа. | CCache |
| asa() | Возвращает объект поведения с указанным именем. | CComponent |
| attachBehavior() | Прикрепляет поведение к этому компоненту. | CComponent |
| attachBehaviors() | Прикрепляет список поведений к компоненту. | CComponent |
| attachEventHandler() | Прикрепляет обработчик событий к событию. | CComponent |
| canGetProperty() | Определяет, можно ли прочитать свойство. | CComponent |
| canSetProperty() | Определяет, можно ли установить свойство. | CComponent |
| delete() | Удаляет значение с указанным ключом из кэша. | CCache |
| detachBehavior() | Отсоединяет поведение от компонента. | CComponent |
| detachBehaviors() | Отсоединяет все поведения от компонента. | CComponent |
| detachEventHandler() | Отсоединяет существующий обработчик событий. | CComponent |
| disableBehavior() | Отключает прикрепленное поведение. | CComponent |
| disableBehaviors() | Отключает все прикреплённые к этому компоненту поведения. | CComponent |
| enableBehavior() | Включает прикрепленное поведение. | CComponent |
| enableBehaviors() | Включает все прикреплённые к этому компоненту поведения. | CComponent |
| evaluateExpression() | Вычисляет PHP-выражение или обратный вызов в контексте этого компонента. | CComponent |
| executeCommand() | Выполняет команду redis. | CRedisCache |
| flush() | Удаляет все значения из кэша. | CCache |
| get() | Извлекает значение из кэша по указанному ключу. | CCache |
| getEventHandlers() | Возвращает список прикреплённых обработчиков событий для события. | CComponent |
| getIsInitialized() | Проверяет, был ли инициализирован этот компонент приложения. | CApplicationComponent |
| hasEvent() | Определяет, определено ли событие. | CComponent |
| hasEventHandler() | Проверяет, есть ли прикреплённые обработчики для указанного события. | CComponent |
| hasProperty() | Определяет, определено ли свойство. | CComponent |
| init() | Инициализирует компонент приложения. | CCache |
| mget() | Извлекает несколько значений из кэша по указанным ключам. | CCache |
| offsetExists() | Возвращает, есть ли запись в кэше с указанным ключом. | CCache |
| offsetGet() | Извлекает значение из кэша по указанному ключу. | CCache |
| offsetSet() | Сохраняет значение, идентифицируемое ключом, в кэш. | CCache |
| offsetUnset() | Удаляет значение с указанным ключом из кэша. | CCache |
| raiseEvent() | Вызывает событие. | CComponent |
| set() | Сохраняет значение, идентифицируемое ключом, в кэше. | CCache |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| addValue() | Сохраняет значение, идентифицируемое ключом, в кэше, если в кэше нет этого ключа. | CRedisCache |
| connect() | Устанавливает соединение с сервером redis. | CRedisCache |
| deleteValue() | Удаляет значение с указанным ключом из кэша. | CRedisCache |
| flushValues() | Удаляет все значения из кэша. | CRedisCache |
| generateUniqueKey() | CCache | |
| getValue() | Извлекает значение из кэша по указанному ключу. | CRedisCache |
| getValues() | Извлекает несколько значений из кэша по указанным ключам. | CRedisCache |
| setValue() | Сохраняет значение, идентифицируемое ключом, в кэше. | CRedisCache |
Подробное описание свойств
database свойство
public int $database;
используемая база данных redis. Это целое число, начинающееся с 0. По умолчанию 0.
hostname свойство
public string $hostname;
имя хоста для подключения к серверу redis. По умолчанию 'localhost'.
options свойство
public int $options;
параметры для передачи параметру flags функции stream_socket_client при подключении к серверу redis. По умолчанию STREAM_CLIENT_CONNECT.
password свойство
public string $password;
пароль для аутентификации на сервере redis. Если не задан, команда AUTH не будет отправлена.
port свойство
public int $port;
порт для подключения к серверу redis. Порт по умолчанию 6379.
timeout свойство
public float $timeout;
таймаут для подключения к redis. Если не задан, используется таймаут, заданный в php.ini: ini_get("default_socket_timeout")
Подробное описание методов
addValue() метод
protected boolean addValue(string $key, string $value, integer $expire) | ||
| $key | string | ключ, определяющий значение для кеширования |
| $value | string | значение для кеширования |
| $expire | integer | количество секунд, в течение которых значение кеша будет действовать. 0 означает, что значение никогда не истечёт. |
| {return} | boolean | true, если значение успешно сохранено в кеш, иначе false |
protected function addValue($key,$value,$expire)
{
if ($expire == 0)
return (bool)$this->executeCommand('SETNX',array($key,$value));
if($this->executeCommand('SETNX',array($key,$value)))
{
$this->executeCommand('EXPIRE',array($key,$expire));
return true;
}
else
return false;
}
Сохраняет значение, идентифицируемое ключом, в кеш, если этот ключ в кеше отсутствует. Это реализация метода, объявленного в родительском классе.
connect() метод
protected void connect() |
protected function connect()
{
$this->_socket=@stream_socket_client(
$this->hostname.':'.$this->port,
$errorNumber,
$errorDescription,
$this->timeout ? $this->timeout : ini_get("default_socket_timeout"),
$this->options
);
if ($this->_socket)
{
if($this->password!==null)
$this->executeCommand('AUTH',array($this->password));
$this->executeCommand('SELECT',array($this->database));
}
else
{
$this->_socket = null;
throw new CException('Failed to connect to redis: '.$errorDescription,(int)$errorNumber);
}
}
Устанавливает соединение с сервером Redis. Не делает ничего, если соединение уже установлено.
deleteValue() метод
protected boolean deleteValue(string $key) | ||
| $key | string | ключ значения, подлежащего удалению |
| {return} | boolean | true, если удаление прошло без ошибок |
protected function deleteValue($key)
{
return (bool)$this->executeCommand('DEL',array($key));
}
Удаляет значение с указанным ключом из кеша. Это реализация метода, объявленного в родительском классе.
executeCommand() метод
public array|bool|null|string executeCommand(string $name, array $params=array ( )) | ||
| $name | string | имя команды |
| $params | array | список параметров для команды |
| {return} | array|bool|null|string | В зависимости от исполняемой команды, этот метод возвращает различные типы данных:
|
public function executeCommand($name,$params=array())
{
if($this->_socket===null)
$this->connect();
array_unshift($params,$name);
$command='*'.count($params)."\r\n";
foreach($params as $arg)
$command.='$'.$this->byteLength($arg)."\r\n".$arg."\r\n";
fwrite($this->_socket,$command);
return $this->parseResponse(implode(' ',$params));
}
Выполняет команду Redis. Список доступных команд и их параметров см. в http://redis.io/commands.
flushValues() метод
protected boolean flushValues() | ||
| {return} | boolean | указывает, была ли операция очистки успешной. |
protected function flushValues()
{
return $this->executeCommand('FLUSHDB');
}
Удаляет все значения из кеша. Это реализация метода, объявленного в родительском классе.
getValue() метод
protected string|boolean getValue(string $key) | ||
| $key | string | уникальный ключ, определяющий кешируемое значение |
| {return} | string|boolean | значение, хранящееся в кеше, false, если значение отсутствует в кеше или истекло. |
protected function getValue($key)
{
return $this->executeCommand('GET',array($key));
}
Извлекает значение из кеша по указанному ключу. Это реализация метода, объявленного в родительском классе.
getValues() метод
protected array getValues(array $keys) | ||
| $keys | array | список ключей, определяющих кешируемые значения |
| {return} | array | список кешированных значений, индексированных по ключам |
protected function getValues($keys)
{
$response=$this->executeCommand('MGET',$keys);
$result=array();
$i=0;
foreach($keys as $key)
$result[$key]=$response[$i++];
return $result;
}
Извлекает несколько значений из кеша по указанным ключам.
setValue() метод
protected boolean setValue(string $key, string $value, integer $expire) | ||
| $key | string | ключ, определяющий значение для кеширования |
| $value | string | значение для кеширования |
| $expire | integer | количество секунд, в течение которых значение кеша будет действовать. 0 означает, что значение никогда не истечёт. |
| {return} | boolean | true, если значение успешно сохранено в кеш, иначе false |
protected function setValue($key,$value,$expire)
{
if ($expire==0)
return (bool)$this->executeCommand('SET',array($key,$value));
return (bool)$this->executeCommand('SETEX',array($key,$expire,$value));
}
Сохраняет значение, идентифицируемое ключом, в кеш. Это реализация метода, объявленного в родительском классе.
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc/api/1.1/CRedisCache