Spec-Zone.ru › Redis

CLIENT

CLIENT PAUSE
Синтаксис
CLIENT PAUSE timeout [WRITE | ALL]
Доступно с версии:
3.0.0
Сложность по времени:
O(1)
Категории ACL:
@admin, @slow, @dangerous, @connection,

Команда CLIENT PAUSE предназначена для управления подключениями и позволяет приостановить всех клиентов Redis на указанное время (в миллисекундах).

Команда выполняет следующие действия:

  • Она останавливает обработку всех ожидающих команд от обычных и pub/sub клиентов для заданного режима. Однако взаимодействия с репликами продолжаются в обычном режиме. Обратите внимание, что клиенты формально приостанавливаются, когда они пытаются выполнить команду, поэтому никаких операций на стороне сервера для неактивных клиентов не выполняется.
  • Однако она возвращает OK вызывающей стороне как можно скорее, поэтому выполнение команды CLIENT PAUSE не приостанавливается само по себе.
  • Когда указанное время истекает, все клиенты разблокируются: это запустит обработку всех команд, накопленных в буфере запросов каждого клиента во время паузы.

Приостановка клиента в настоящее время поддерживает два режима:

  • ALL: Это режим по умолчанию. Все команды клиентов блокируются.
  • WRITE: Клиенты блокируются только при попытке выполнить команду записи.

В режиме WRITE некоторые команды ведут себя особым образом:

  • EVAL/EVALSHA: Блокирует клиента для всех скриптов.
  • PUBLISH: Блокирует клиента.
  • PFCOUNT: Блокирует клиента.
  • WAIT: Подтверждения будут задерживаться, поэтому эта команда будет выглядеть заблокированной.

Эта команда полезна, так как позволяет контролируемо переключать клиентов с одного экземпляра Redis на другой. Например, во время обновления экземпляра системный администратор может сделать следующее:

  • Приостановить клиентов, используя CLIENT PAUSE
  • Подождать несколько секунд, чтобы убедиться, что реплики обработались последний поток репликации с главного экземпляра.
  • Превратить одну из реплик в главный экземпляр.
  • Настроить клиенты для подключения к новому главному экземпляру.

Начиная с Redis 6.2, рекомендуемый режим приостановки клиента — WRITE. Этот режим останавливает весь трафик репликации, может быть прерван командой CLIENT UNPAUSE и позволяет переконфигурировать старый главный экземпляр без риска принятия записей после переключения. Это также режим, используемый при переключении кластера.

Для версий до 6.2 можно отправить CLIENT PAUSE в блоке MULTI/EXEC вместе с командой INFO replication для получения текущего смещения главного экземпляра на момент блокировки клиентов. Таким образом, можно дождаться определенного смещения на стороне реплики, чтобы убедиться, что весь поток репликации был обработан.

Начиная с Redis 3.2.10 / 4.0.0, эта команда также предотвращает удаление или истечение срока действия ключей во время приостановки клиентов. Таким образом, набор данных гарантированно остается статичным не только с точки зрения невозможности записи клиентами, но и с точки зрения внутренних операций.

Возврат

Простой строковый ответ: Команда возвращает OK или ошибку, если таймаут некорректен.

История изменений поведения

  • >= 3.2.0: Приостановка клиента также предотвращает приостановку клиента и удаление ключей.

История

  • Начиная с версии Redis 6.2.0: CLIENT PAUSE WRITE режим добавлен вместе с опцией mode.

© 2006–2022 Salvatore Sanfilippo
Licensed under the Creative Commons Attribution-ShareAlike License 4.0.
https://redis.io/commands/client-pause/

Spec-Zone.ru

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