php - Predis 与 PhpiredisStreamConnection 持久化

标签 php sockets tcp redis predis

我正在开发 Web 服务,我将 Predis 用作 redis 库,我希望客户端能够重用相同的 TCP 套接字。

目前,在对我的服务进行负载测试后,我发现服务器上处于 TIME_WAIT 状态的套接字数量快速增加,并且在某些时候与 Redis 服务器的连接被拒绝。

根据使用带有 presistant 选项的 PhpiredisStreamConnection 的 Redis 文档修复了这个问题,但是在将它添加到我的连接代码之后,我仍然面临同样的问题。有什么想法吗?

我使用 TCP 连接,因为 Redis 实例不在前端服务器上。

<?php

include 'autoload.php';

$parameters = array(
'tcp://some.host01:6379?database=0&alias=master&persistent=1',
'tcp://some.host02:6379?database=0&alias=slave&persistent=1',
);

$options = array(   'replication' => true ,
'connections' =>  array('tcp'  => 'Predis\Connection\PhpiredisStreamConnection','unix' => 'Predis\Connection\PhpiredisStreamConnection') );

$predis = new Predis\Client($parameters, $options);

?>

最佳答案

根据文档,当 php 进程配置为持久进程时,Predis 适用于持久连接。查看以下内容了解更多详情:

https://github.com/joindin/joindin-web2/blob/master/vendor/predis-0.8/FAQ.md

http://php-fpm.org/

关于php - Predis 与 PhpiredisStreamConnection 持久化,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24157265/

相关文章:

python - 尝试使用Python在Socket中扫描IP以获取域名

调用 Go RPC TCP 服务时 Ruby Socket 客户端挂起

c - 通过c中的套接字发送结构

tcp - 较大的 TCP 窗口大小是否会导致高错误率网络出现问题?

javascript - 通过 php 查询链接到弹出 View

php - JSON编码的数组在什么情况下可以变成字符串?

ruby - Socket.recv 有效但无法获取或读取?

PHP 7.2 : HTTP Form Post, 某些内容正在用反斜杠转义单引号。 Magic Quotes 在 5.x 中被删除

php - Paypal订阅支付错误信息3005

python - 带有 Scapy 的不需要的 RST TCP 数据包