我正在阅读关于redis管道的文章,在这里我看到了基本的例子。
下面的命令正在按预期工作。
(printf "PING\r\nPING\r\nPING\r\n"; sleep 1) | nc localhost 6379输出:
+PONG
+PONG
+PONG但是当我移除睡眠时,命令并没有给我任何结果。
(printf "PING\r\nPING\r\nPING\r\n";) | nc localhost 6379我不能理解这里的行为。
任何帮助都将不胜感激。
发布于 2019-09-17 03:40:02
当管道(|)之前的命令(例如(printf "PING\r\nPING\r\nPING\r\n";) )完成时,它将向nc命令发送EOF,nc将关闭到Redis的连接并退出。然而,在nc退出之前,它可能还没有收到Redis的响应。
为了确保nc接收来自Redis的响应并输出响应,在printf请求之后,它会休眠一段时间,例如sleep 1。通常,nc可以在1秒中接收来自Redis的响应。这样你就能看到输出。
https://stackoverflow.com/questions/57962581
复制相似问题