因为 $redis->get() 的时候自动重新连接了。
用 strace 跟踪执行:
# 第一次连接
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(6379), sin_addr=inet_addr("10.217.0.226")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(4, SOL_SOCKET, SO_KEEPALIVE, [0], 4) = 0
# 发送 set test check
sendto(4, "*3\r\n$3\r\nSET\r\n$4\r\ntest\r\n$5\r\ncheck"..., 34, MSG_DONTWAIT, NULL, 0) = 34
recvfrom(4, "+", 1, MSG_PEEK, NULL, NULL) = 1
recvfrom(4, "+OK\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 5
# 关闭连接
close(4) = 0
# 重新连接!!!
socket(AF_INET, SOCK_STREAM, IPPROTO_IP) = 4
connect(4, {sa_family=AF_INET, sin_port=htons(6379), sin_addr=inet_addr("10.217.0.226")}, 16) = -1 EINPROGRESS (Operation now in progress)
getsockopt(4, SOL_SOCKET, SO_ERROR, [0], [4]) = 0
setsockopt(4, SOL_TCP, TCP_NODELAY, [1], 4) = 0
setsockopt(4, SOL_SOCKET, SO_KEEPALIVE, [0], 4) = 0
# 发送 get test
sendto(4, "*2\r\n$3\r\nGET\r\n$4\r\ntest\r\n", 23, MSG_DONTWAIT, NULL, 0) = 23
recvfrom(4, "$", 1, MSG_PEEK, NULL, NULL) = 1
recvfrom(4, "$5\r\ncheck\r\n", 8192, MSG_DONTWAIT, NULL, NULL) = 11
string(5) "check"