1.首先先介绍下connect和pconnect的区别。
connect:脚本结束之后连接就释放了。
2.pconnect:脚本结束之后连接不释放,连接保持在php-fpm进程中。
所以使用pconnect代替connect,可以减少频繁建立redis连接的消耗。
redis手册中的介绍
connect, open Description Connects to a Redis instance. 连接到一个Redis实例 Parameters host: string. can be a host, or the path to a unix domain socket Return Value BOOL: TRUE on success, FALSE on error. Example $redis->connect('127.0.0.1', 6379); $redis->connect('127.0.0.1'); // port 6379 by default $redis->connect('127.0.0.1', 6379, 2.5); // 2.5 sec timeout. $redis->connect('/tmp/redis.sock'); // unix domain socket. |
pconnect, popenDescription Connects to a Redis instance or reuse a connection already established with pconnect/popen. The connection will not be closed on close or end of request until the php process ends. So be patient on to many open FD's (specially on redis server side) when using persistent connections on many servers connecting to one redis server. 这个连接将不会被主动关闭,比如使用close(),或者PHP执行结束这个连接都不会被主动关闭。当有大量的connect请求在redis服务器端时,使用持久化的连接对象。 Also more than one persistent connection can be made identified by either host + port + timeout or host + persistent_id or unix socket + timeout. 一个持久化的连接实例,可以使用HOST+PORT+TIMEOUT或者HOST+persistent_id或者SOCKET+TIMEOUT的方式创建。 This feature is not available in threaded versions. pconnect and popen then working like their non persistent equivalents. pconnect函数和popen函数在线程版本中不能被使用。 Parameters host: string. can be a host, or the path to a unix domain socket Return Value BOOL: TRUE on success, FALSE on error. Example $redis->pconnect('127.0.0.1', 6379); $redis->pconnect('127.0.0.1'); // port 6379 by default - same connection like before. $redis->pconnect('127.0.0.1', 6379, 2.5); // 2.5 sec timeout and would be another connection than the two before. $redis->pconnect('127.0.0.1', 6379, 2.5, 'x'); // x is sent as persistent_id and would be another connection the the three before. $redis->pconnect('/tmp/redis.sock'); // unix domain socket - would be another connection than the four before. |
你要保守你心,胜过保守一切。
作者:刘俊涛的博客