2015-06-11 14 views
16

Czy istnieje sposób na Usunąć wszystkie połączenia klienta Redis za pomocą jednego polecenia?Czy istnieje sposób na usunięcie wszystkich połączeń klientów Redis?

wiem, że jest to możliwe do usunięcia przez IP: PORT

CLIENT KILL addr:port 

Ponadto stwierdziliśmy, że jest to możliwe, aby to zrobić, ponieważ Redis 2.8.12. Ale Nie mogłem nic znaleźć.

+1

SHUTDOWN :) Poważnie jednak mówiąc, nie. Jaki jest przypadek użycia? –

+0

To tylko dla celów dewelopera, osiągamy limit połączeń i chcę zabić wszystkich. – felipekm

Odpowiedz

25

CLIENT KILL może odbierać TYPE argument, że może być jednym z trzech typów połączeń; normal, slave i pubsub.

można zabić wszystkie otwarte połączenia, wysyłając trzy następujące polecenia:

CLIENT KILL TYPE normal 
CLIENT KILL TYPE slave 
CLIENT KILL TYPE pubsub 

pamiętać, że można pominąć później dwa, jeśli nie je (Slave i PubSub przyłączy) używać. Można dodać także SKIPME no dla zabójcy połączeń kamikaze.

+0

Nie pamiętam tego - dzięki! –

4

Tak więc SHUTDOWN jest zdecydowanie najłatwiejszy sposób, szczególnie w dev.

Mimo że Redis nie ma wariantu CLIENT KILL *, można go skryptować. AFAIR możesz to zrobić nawet w Lua, ale sprawdziłem teraz i CLIENT LIST bzdur, więc domyślam się, że to się zmieniło. Mimo to, jest to dość łatwe do zrobienia to z CLI - wydaje się to zrobić trick:

redis-cli CLIENT LIST | cut -d ' ' -f 2 | cut -d = -f 2 | awk -e '{ print "CLIENT KILL " $0 }' | redis-cli -x 
2

można użyć następującego polecenia, aby sprawdzić swoje numery połączeń:

netstat -an | grep :6379 | grep ESTABLISHED | wc -l

Następnie spróbuj komendy Client Redis zabić połączenia: http://redis.io/commands/client-kill