Есть ли способ удалить все клиентские соединения Redis?
Есть ли способ удалить все клиентские соединения Redis с помощью одной команды?
Я знаю, что его можно удалить по IP: PORT
CLIENT KILL addr:port
Также я обнаружил, что это можно сделать с Redis 2.8.12.
Но
Я ничего не мог найти.
Ответы
Ответ 1
CLIENT KILL
может принимать аргумент TYPE
, который может быть одним из трех типов соединений; normal
, slave
и pubsub
.
Вы можете убить все открытые соединения, отправив следующие три команды:
CLIENT KILL TYPE normal
CLIENT KILL TYPE slave
CLIENT KILL TYPE pubsub
Обратите внимание, что вы можете пропустить последние два, если вы не используете их (подчиненные и pubsub-соединения).
Вы также можете добавить SKIPME no
для убийцы соединений kamikaze.
Ответ 2
Итак, SHUTDOWN
- это, безусловно, самый простой способ, особенно в dev.
Однако, хотя у Redis нет варианта CLIENT KILL *
, вы можете script его. AFAIR вы могли бы даже сделать это в Lua, но сейчас я проверил и CLIENT LIST
заблуждался, поэтому я предполагаю, что это изменилось. Тем не менее, это довольно легко сделать с помощью CLI - это, похоже, делает трюк:
redis-cli CLIENT LIST | cut -d ' ' -f 2 | cut -d = -f 2 | awk -e '{ print "CLIENT KILL " $0 }' | redis-cli -x
Ответ 3
Для проверки номеров соединений вы можете использовать следующую команду:
netstat -an | grep :6379 | grep ESTABLISHED | wc -l
Затем попробуйте команду Redis Client, чтобы убить соединение:
http://redis.io/commands/client-kill