php redis stream,php redis->close() 之后为什么还能使用 $redis->get('key') 获取数据?

因为 $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"

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值