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: Заменено
slaveTYPEна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/