Nicht curl, erfordert aber keine HTTP-Schnittstelle oder nc (ideal für so etwas wie einen Container, in dem nc nicht installiert ist)
exec 3<>/dev/tcp/127.0.0.1/6379 && echo -e "PING\r\n" >&3 && head -c 7 <&3
Sollte dir geben
+PONG
In diesem fantastischen Artikel können Sie mehr darüber lesen, was vor sich geht.
Wenn Sie curl verwenden möchten, benötigen Sie REST über RESP, wie webdis, tinywebdis oder turbowebdis. Siehe https://github.com/markuman/tinywebdis#turbowebdis-tinywebdis--cherrywebdis
$ curl -w '\n' http://127.0.0.1:8888/ping
{"ping":"PONG"}
Ohne eine REST-Schnittstelle für Redis können Sie beispielsweise netcat verwenden.
$ (printf "PING\r\n";) | nc <redis-host> 6379
+PONG
Für passwortgeschützte Redis können Sie netcat wie folgt verwenden:
$ (printf "AUTH <password>\r\n";) | nc <redis-host> 6379
+PONG
Bei netcat müssen Sie das RESP-Protokoll selbst erstellen. Siehe http://redis.io/topics/protocol
Aktualisierung 09.01.2018
Ich habe eine mächtige Bash-Funktion gebaut, die die Redis-Instanz um jeden Preis über TCP anpingt
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)
}
Nutzung redis-ping localhost