如果Redis用于在PHP中存储Session,将使用多少套接字?

时间:2011-10-25 23:47:03

标签: php session redis

假设我使用Redis将我的会话存储在PHP中(之前我使用的是mySql 5.0),Redis Server与PHP App服务器位于不同的服务器中。因此,当有请求进入时,将从Redis创建/加载会话,它将从PHP App Server获取一个套接字。如果有100个并发请求,Redis会有100个套接字吗?还是只有一个?

1 个答案:

答案 0 :(得分:1)

Redis没有任何内置的连接池,我不认为PHP的当前Redis绑定提供类似的东西,因此默认情况下每个PHP线程会打开一个套接字/连接。因此,如果您的Web服务器(Apache / Nginx / IIS)尝试使用100个PHP线程为这100个并发请求提供服务,那么将有100个与Redis的连接。

如果服务器被配置为限制PHP线程的数量(我认为更常见)那么这100个并发请求将由5个PHP线程(每个处理~20个请求,一个接一个)提供服务这意味着在任何时候都会有5个与Redis的开放连接。如果它们不是持久连接,那么你将有100个连接到Redis和100个断开连接,在任何给定时刻只有5个连接。如果连接是持久的,那么你将只打开5个连接,只有当父PHP线程终止时才关闭。