我的一个应用程序突然开始给出错误:
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
,但到目前为止还没有运气。有什么建议吗?
可能不是具体问题的答案,但可能会帮助那些新来的Redis谁来这里通过谷歌的例外。
你也会得到这个异常,如果你创建了一个Redis实例,并开始在它上面调用方法,而没有首先通过调用
连接到Redis服务器。$redis->connect('localhost')
如果Redis不是本地主机,配置为侦听不同的端口,设置密码等,则调用的参数显然应该进行调整。
嗯,正如异常描述的那样,你的Redis服务器宕机了。
尝试以下内容:
- 查看运行Redis实例的服务器是否包含防火墙(iptables,也许?)
- 去你的web服务器(运行你的php),并尝试telnet到你的redis服务器
- 查看配置的主机/ip是否正确。可能Redis服务器的网络设置被更改了。
连接到redis有问题
我通过将冒号改为逗号来解决这个问题
$redis->connect('localhost:6379');
from this to this
$redis->connect('localhost', 6379);
如果你运行在本地/dev环境,请确保Redis Service正在运行
你可以通过打开Redis Client命令来检查本地服务是否正在运行。如果您在MAC上,打开命令行并输入redis-cli。
如果您的服务器正在运行,您应该看到:
复述127.0.0.1:6379>
在我的情况下,我忘记启动windows服务,所以我所要做的就是:打开服务。启动Redis Server服务。
我在将我的软件与本地Redis安装集成时遇到了同样的问题。原来是"localhost";主机名没有被解析(东西是在一个不知道的docker容器中运行)。更改为常规环回IP "127.0.0.1"
我的问题是我正在使用Docker Compose,需要使用容器的名称而不是'localhost'。
// Connect to the Redis Docker created server. 'redis' refers to the
// 'redis' container in the docker-compose.yml file.
$redis->connect('redis');
// docker-compose.yml
redis:
image: redis:alpine
volumes:
- redis-data:/data
ports:
- ${FORWARD_REDIS_PORT:-6379}:6379
healthcheck:
test: ["CMD", "redis-cli", "ping"]
networks:
- default