【问题标题】:Fatal error: Uncaught exception 'RedisException' with message 'Redis server went away'致命错误:未捕获的异常“RedisException”和消息“Redis 服务器已消失”
【发布时间】:2014-09-19 01:05:03
【问题描述】:

我的一个应用突然开始报错:

Fatal error: Uncaught exception 'RedisException' with message 'Redis server went away' in /var/www/_slim/_core/system/generator.001.php:133 Stack trace: #0 /var/www/_slim/_core/system/generator.001.php(133): Redis->auth('77B1BFFBC0378DF...') #1 /var/www/_slim/_core/system/generator.007.php(144): Generator001->r6_redis_start('R') #2 /var/www/_slim/_core/system/generator.007.php(26): Generator007->HarvestRedis() #3 /var/www/_slim/_core/system/generator.shopping.php(14): Generator007->Generator007() #4 /var/www/_slim/_core/system/generator.last.php(43): Generator008->Generator008() #5 /var/www/_slim/site/home/php/index.php(16): GeneratorLast->GeneratorLast() #6 /var/www/index.php(96): Gui->Gui()
#7 {main} thrown in /var/www/_slim/_core/system/generator.001.php on line 133

我已经重新安装了redis-server,但到目前为止还没有运气。有什么建议吗?

【问题讨论】:

    标签: php redis phpredis


    【解决方案1】:

    好吧,正如异常所描述的那样,您的 Redis 服务器已关闭。

    尝试以下方法:

    1. 查看运行 Redis 实例的服务器是否包含任何防火墙(可能是 iptables?)。
    2. 转到您的 Web 服务器(运行您的 php)并尝试 telnet 到您的 redis 服务器。
    3. 查看配置的host/ip是否正确。可能 Redis 服务器的网络设置中的某些内容已更改。

    【讨论】:

    • (1) 尝试禁用 iptables 但没有运气 (2)。我如何远程登录到您的 redis 服务器。我正在使用 lighttpd。 (3)。查看配置的host/ip是否正确。可能 Redis 服务器的网络设置中的某些内容已更改。 - 我怎样才能做到这一点?我想没关系。
    • 通过 ssh 连接到运行您的应用程序的服务器,然后执行以下操作:telnet yourRedisHost 6379(或您配置的任何端口)。查看连接是否建立。 3 - 检查您的应用配置,您已在其中配置了您的 redis 主机/ip:port,以查看它是否与您当前的生产状态匹配
    • Telnet 已连接.. 甚至通过核心 php 连接但不使用 ZF2。请帮忙
    【解决方案2】:

    也许不是特定问题的答案,但可能会通过谷歌搜索异常来帮助那些刚接触 Redis 的人。

    如果您创建了一个 Redis 实例并开始在其上调用方法而不首先通过调用连接到 Redis 服务器,您也会得到此异常

    $redis->connect('localhost')
    

    如果 Redis 不是本地主机、配置为侦听不同的端口、设置密码等,显然应该调整调用的参数。

    【讨论】:

    • 我将它与 ZF2 一起使用,并且无法手动连接它......因为它自己连接。仍然出现此错误。
    • @Ritesh 我没有使用 ZF,但希望其中一个答案可能会有所帮助 - 检查 Redis 服务器是否实际上没有关闭,以及您是否将正确的详细信息传递给 StorageFactory 或其他正在创建一个 Redis 实例。
    【解决方案3】:

    如果您在本地/开发环境中运行,请确保 Redis 服务正在运行。

    您可以通过打开 Redis Client cmd 来检查您的本地服务是否正在运行。如果您使用的是 MAC,请打开命令行并键入 redis-cli。

    如果您的服务器正在运行,您应该会看到:

    redis 127.0.0.1:6379>

    在我的情况下,我忘记启动 windows 服务,所以我所要做的就是:打开 services.msc,启动 Redis Server 服务。

    【讨论】:

      【解决方案4】:

      我在连接到 redis 时遇到问题

      我设法通过将冒号更改为逗号来解决它

      $redis->connect('localhost:6379');
      

      从这里到这里

      $redis->connect('localhost', 6379);
      

      【讨论】:

        猜你喜欢
        • 2012-04-22
        • 2015-01-26
        • 1970-01-01
        • 1970-01-01
        • 2015-01-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多