Spec-Zone.ru › Redis

CLIENT

CLIENT KILL
Синтаксис
CLIENT KILL <ip:port | <[ID client-id] | [TYPE <NORMAL | MASTER |
  SLAVE | REPLICA | PUBSUB>] | [USER username] | [ADDR ip:port] |
  [LADDR ip:port] | [SKIPME <YES | NO>] [[ID client-id] |
  [TYPE <NORMAL | MASTER | SLAVE | REPLICA | PUBSUB>] |
  [USER username] | [ADDR ip:port] | [LADDR ip:port] | [SKIPME <YES
  | NO>] ...]>>
Доступно с версии:
2.4.0
Сложность по времени:
O(N), где N — количество подключений к клиенту
Категории ACL:
@admin, @slow, @dangerous, @connection,

Команда CLIENT KILL закрывает заданное подключение к клиенту. Эта команда поддерживает два формата, старый формат:

CLIENT KILL addr:port

Значение ip:port должно соответствовать строке, возвращённой командой CLIENT LIST (поле addr).

Новый формат:

CLIENT KILL <filter> <value> ... ... <filter> <value>

С новым форматом можно убивать клиентов по различным атрибутам, а не только по адресу. Доступны следующие фильтры:

  • CLIENT KILL ADDR ip:port. Это точно такой же, как и поведение со старыми тремя аргументами.
  • CLIENT KILL LADDR ip:port. Убивает всех клиентов, подключённых к указанному локальному (bind) адресу.
  • CLIENT KILL ID client-id. Позволяет убить клиента по его уникальному полю ID. Клиенты ID извлекаются с помощью команды CLIENT LIST.
  • CLIENT KILL TYPE type, где тип — одно из normal, master, replica и pubsub. Это закрывает подключения всех клиентов в указанном классе. Обратите внимание, что клиенты, заблокированные командой MONITOR, считаются принадлежащими к классу normal.
  • CLIENT KILL USER username. Закрывает все подключения, авторизованные с указанным именем пользователя ACL, однако возвращает ошибку, если имя пользователя не соответствует существующему пользователю ACL.
  • CLIENT KILL SKIPME yes/no. По умолчанию этот параметр установлен в yes, то есть клиент, вызывающий команду, не будет убит. Однако установка этого параметра в no также приведёт к убийству вызывающего клиента.

Можно указать несколько фильтров одновременно. Команда обработает несколько фильтров по логическому И. Например:

CLIENT KILL addr 127.0.0.1:12345 type pubsub

является допустимым и убьет только клиента pubsub с указанным адресом. Этот формат, содержащий несколько фильтров, в настоящее время редко используется.

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

CLIENT KILL и Redis Sentinel

Недавние версии Redis Sentinel (Redis 2.8.12 или выше) используют CLIENT KILL для убийства клиентов при переконфигурации экземпляра, чтобы заставить клиентов повторно выполнить рукопожатие с одним Sentinel и обновить его конфигурацию.

Примечания

Из-за однопоточной природы Redis невозможно убить подключение к клиенту во время выполнения команды. С точки зрения клиента, подключение никогда не может быть закрыто посреди выполнения команды. Однако клиент заметит, что подключение было закрыто только при отправке следующей команды (и это приведёт к сетевой ошибке).

Возврат

При вызове с тремя аргументами:

Простой строковый ответ: OK если подключение существует и было закрыто

При вызове с форматом фильтр/значение:

Целочисленный ответ: количество убитых клиентов.

История

  • Начиная с Redis версии 2.8.12: Добавлен новый формат фильтра.
  • Начиная с Redis версии 2.8.12: Добавлена опция ID.
  • Начиная с Redis версии 3.2.0: Добавлен тип master для опции TYPE.
  • Начиная с Redis версии 5.0.0: Заменено slave TYPE на replica. slave всё ещё поддерживается для обратной совместимости.
  • Начиная с Redis версии 6.2.0: Добавлена опция LADDR.

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

Spec-Zone.ru

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