Класс yii\redis\Mutex
| Наследование | yii\redis\Mutex » yii\mutex\Mutex » yii\base\Component » yii\base\Object |
|---|---|
| Реализует | yii\base\Configurable |
| Доступно с версии | 2.0.6 |
| Исходный код | https://github.com/yiisoft/yii2-redis/blob/master/Mutex.php |
Блокировка Redis Mutex реализует компонент блокировки, используя redis в качестве хранилища.
Для корректной работы Redis Mutex требуется версия redis 2.6.12 или выше.
Необходимо настроить его с помощью redis yii\redis\Connection, который также настроен как компонент приложения. По умолчанию он будет использовать компонент redis приложения.
Чтобы использовать redis Mutex в качестве компонента приложения, настройте приложение следующим образом:
[
'components' => [
'mutex' => [
'class' => 'yii\redis\Mutex',
'redis' => [
'hostname' => 'localhost',
'port' => 6379,
'database' => 0,
]
],
],
]
Или, если вы настроили redis yii\redis\Connection как компонент приложения, достаточно следующего:
[
'components' => [
'mutex' => [
'class' => 'yii\redis\Mutex',
// 'redis' => 'redis' // id of the connection application component
],
],
]
См. также:
Общедоступные свойства
| Свойство | Тип | Описание | Определено в |
|---|---|---|---|
| $autoRelease | boolean | Определяет, должны ли все блокировки, полученные в этом процессе (т.е. локальные блокировки), быть автоматически освобождены перед завершением выполнения сценария. | yii\mutex\Mutex |
| $behaviors | yii\base\Behavior[] | Список поведений, присоединённых к этому компоненту | yii\base\Component |
| $expire | integer | Количество секунд, в течение которого блокировка будет автоматически освобождена. | yii\redis\Mutex |
| $keyPrefix | string | Строка-префикс для каждого ключа кэша, делающая его уникальным. | yii\redis\Mutex |
| $redis | yii\redis\Connection|string|array | Объект yii\redis\Connection Redis или идентификатор компонента приложения объекта yii\redis\Connection Redis. | yii\redis\Mutex |
Общедоступные методы
| Метод | Описание | Определено в |
|---|---|---|
| __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 |
| acquire() | Получает блокировку по имени. | yii\mutex\Mutex |
| attachBehavior() | Присоединяет поведение к компоненту. | yii\base\Component |
| attachBehaviors() | Присоединяет список поведений к компоненту. | yii\base\Component |
| behaviors() | Возвращает список поведений, которые должен иметь этот компонент. | yii\base\Component |
| canGetProperty() | Возвращает значение, указывающее, можно ли читать свойство. | yii\base\Object |
| canSetProperty() | Возвращает значение, указывающее, можно ли установить свойство. | yii\base\Object |
| className() | Возвращает полное имя этого класса. | yii\base\Object |
| detachBehavior() | Отсоединяет поведение от компонента. | yii\base\Component |
| detachBehaviors() | Отсоединяет все поведения от компонента. | yii\base\Component |
| ensureBehaviors() | Убеждается, что поведения, объявленные в behaviors(), присоединены к этому компоненту. | yii\base\Component |
| getBehavior() | Возвращает объект именованного поведения. | yii\base\Component |
| getBehaviors() | Возвращает все присоединённые к этому компоненту поведения. | yii\base\Component |
| hasEventHandlers() | Возвращает значение, указывающее, есть ли обработчики, присоединённые к указанному событию. | yii\base\Component |
| hasMethod() | Возвращает значение, указывающее, определён ли метод. | yii\base\Object |
| hasProperty() | Возвращает значение, указывающее, определено ли свойство. | yii\base\Object |
| init() | Инициализирует компонент redis Mutex. | yii\redis\Mutex |
| off() | Отсоединяет существующий обработчик событий от этого компонента. | yii\base\Component |
| on() | Присоединяет обработчик событий к событию. | yii\base\Component |
| release() | Освобождает полученную блокировку. Этот метод вернёт false, если блокировка не найдена. | yii\mutex\Mutex |
| trigger() | Вызывает событие. | yii\base\Component |
Защищённые методы
| Метод | Описание | Определено в |
|---|---|---|
| acquireLock() | Получает блокировку по имени. | yii\redis\Mutex |
| calculateKey() | Генерирует уникальный ключ, используемый для хранения мьютекса в Redis. | yii\redis\Mutex |
| releaseLock() | Освобождает полученную блокировку. Этот метод вернёт false в случае, если блокировка не найдена или команда Redis завершилась неудачей. | yii\redis\Mutex |
Подробности свойств
$expire общедоступное свойство
Количество секунд, в течение которого блокировка будет автоматически освобождена.
public integer $expire = 30
$keyPrefix общедоступное свойство
Строка-префикс для каждого ключа кэша, делающая его уникальным. Если не задан, используется префикс, сгенерированный из \yii\redis\Application::id. Вы можете установить это свойство в пустую строку, если не хотите использовать префикс ключа. Рекомендуется явно установить это свойство в какое-то статическое значение, если кэшируемые данные должны быть совмещены между несколькими приложениями.
public string $keyPrefix = null
$redis общедоступное свойство
Объект Redis yii\redis\Connection или идентификатор компонента приложения Redis yii\redis\Connection. Это также может быть массив, используемый для создания экземпляра redis yii\redis\Connection, если вы не хотите настроить соединение redis как компонент приложения. После создания объекта Mutex, если вы хотите изменить это свойство, вы должны назначить ему только объект Redis yii\redis\Connection.
public yii\redis\Connection|string|array $redis = 'redis'
Подробное описание методов
acquireLock() защищённый метод
Получает блокировку по имени.
| защищённый boolean acquireLock ( $name, $timeout = 0 ) | ||
|---|---|---|
| $name | string |
Имя блокировки для получения. Должно быть уникальным. |
| $timeout | integer |
Время ожидания освобождения блокировки. По умолчанию |
| return | boolean |
Результат получения блокировки. |
calculateKey() защищённый метод
Генерирует уникальный ключ, используемый для хранения мьютекса в Redis.
| защищённый string calculateKey ( $name ) | ||
|---|---|---|
| $name | string |
Имя мьютекса. |
| return | string |
Безопасный ключ кэша, связанный с именем мьютекса. |
init() публичный метод
Инициализирует компонент redis Mutex.
Этот метод инициализирует свойство $redis, чтобы убедиться, что оно ссылается на действительное соединение redis.
| публичный void init ( ) | ||
|---|---|---|
| throws | yii\base\InvalidConfigException |
если $redis некорректен. |
releaseLock() защищённый метод
Освобождает полученную блокировку. Этот метод вернёт false в случае, если блокировка не найдена или команда Redis завершилась неудачно.
| защищённый boolean releaseLock ( $name ) | ||
|---|---|---|
| $name | string |
Имя блокировки для освобождения. Эта блокировка должна уже существовать. |
| return | boolean |
Результат освобождения блокировки: |
© 2008–2017 by Yii Software LLC
Licensed under the three clause BSD license.
http://www.yiiframework.com/doc-2.0/yii-redis-mutex.html