来自 PHP 的 Redis 连接缓慢

Posted

技术标签:

【中文标题】来自 PHP 的 Redis 连接缓慢【英文标题】:Redis connection slow from PHP 【发布时间】:2012-12-14 03:01:03 【问题描述】:

我刚开始在我的应用程序中使用 Redis,但由于某种原因,从 php 到 Redis 服务器的初始连接几乎需要 1 秒。使用 Predis 时,延迟问题在第一次调用 get() 之前不会发生,如果我尝试手动连接,延迟会发生在通过 fsockopen() 的初始连接上。

我已经阅读了redis latency documentation,但这些信息似乎与我的情况无关。运行redis-cli --latency 似乎只会产生乱码。我想我的问题是解决此问题的最佳方法是什么?任何帮助将不胜感激。

Predis 客户端实例化:

$redis = new Predis\Client(array(
    'host'     => 'localhost',
    'port'     => 6379
));

以下是一些相关信息:

PHP 5.4.7 XAMPP Windows 7 64 位 16GB 内存 redis 服务器在本地运行在 6379 端口

【问题讨论】:

尝试自己从 netcat 或类似的连接到 redis,看看延迟是否来自 redis 服务器。如果没有,请尝试以侦听模式从 php 登录到 netcat,以查看问题是否来自您的 php 套接字。至少你会知道哪一方有问题...... 【参考方案1】:

在 windows 上总是使用127.0.0.1 而不是 localhost。

在最近的 Windows 版本中,名称 localhost 的解析是在 DNS 本身内处理的(它是帮助合并 IPv6 的“功能”),并且此 dns 查询总是需要 1 秒。

【讨论】:

以上是关于来自 PHP 的 Redis 连接缓慢的主要内容,如果未能解决你的问题,请参考以下文章

PHP如何连接和使用Redis

干货php Redis连接池

PHP REDIS/MYSQL,并发连接问题

php 连接redis,并登录验证

Redis PHP连接操作

php连接redis,报错ERROR:同步数据异常