Есть ли способ удалить все клиентские соединения 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