Non curl, ma non richiede un'interfaccia HTTP o nc (ottimo per qualcosa come un contenitore in cui non hai nc installato)
exec 3<>/dev/tcp/127.0.0.1/6379 && echo -e "PING\r\n" >&3 && head -c 7 <&3
Dovrebbe darti
+PONG
Puoi leggere di più su cosa sta succedendo in questo fantastico articolo.
Quando vuoi usare curl, hai bisogno di REST su RESP, come webdis, tinywebdis o turbowebdis. Vedi https://github.com/markuman/tinywebdis#turbowebdis-tinywebdis--cherrywebdis
$ curl -w '\n' http://127.0.0.1:8888/ping
{"ping":"PONG"}
Senza un'interfaccia REST per redis, puoi usare netcat per esempio.
$ (printf "PING\r\n";) | nc <redis-host> 6379
+PONG
Per i redis protetti da password puoi usare netcat in questo modo:
$ (printf "AUTH <password>\r\n";) | nc <redis-host> 6379
+PONG
Con netcat devi costruire il protocollo RESP da solo. Vedi http://redis.io/topics/protocol
aggiornamento 09-01-2018
Ho creato una potente funzione bash che esegue il ping dell'istanza redis ad ogni costo su tcp
function redis-ping() {
# ping a redis server at any cost
redis-cli -h $1 ping 2>/dev/null || \
echo $((printf "PING\r\n";) | nc $1 6379 2>/dev/null || \
exec 3<>/dev/tcp/$1/6379 && echo -e "PING\r\n" >&3 && head -c 7 <&3)
}
utilizzo redis-ping localhost