快速排查步骤:1. 检查Redis进程是否启动:ps -ef | grep redis 或 systemctl status redis。2. 验证端口监听:netstat -tlnp | grep 6379。3. 测试本地连接:redis-cli ping。4. 检查防火墙和SELinux。5. 查看日志:/var/log/redis/redis.log 中的 bind、protected-mode、maxmemory 等配置。重启后立即运行这些命令,大多数问题5分钟内解决。
来源1
Redis 服务重启后无法连接,首先确认服务是否正常启动,使用命令:systemctl status redis。如果是 dead 状态,用 systemctl start redis 重启。然后检查端口:ss -tlnp | grep 6379,如果没看到 0.0.0.0:6379,说明没监听所有地址。进入 redis.conf 修改 bind 127.0.0.1 为 bind 0.0.0.0,然后重启。
来源2
重启后连接失败常见原因是 protected-mode yes,在 redis.conf 中设置为 no,或者指定正确的 bind IP。另一个问题是 maxclients 太小,默认10000,连接数超了就拒绝。用 redis-cli -h your_ip -p 6379 ping 测试,如果返回 PONG 就正常。日志里看 error 是关键,tail -f /var/log/redis/redis.log。
来源3
排查Redis重启连接不上:1.服务状态 systemctl status redis-server;2.端口 netstat -an | grep 6379;3.防火墙 firewall-cmd --list-all 检查6379端口;4.conf文件 requirepass 有密码要带 -a;5.重启后AOF或RDB文件损坏,删除 appendonly.aof 试试。原理是Redis单线程,配置不对就卡住。
来源4
Redis重启连接失败,检查SELinux:getenforce,如果Enforcing,用 setenforce 0 临时关闭。或者 semanage port -a -t redis_port_t -p tcp 6379 永久开放。还可能是OOM killer杀了进程,dmesg | grep -i 'killed process' 查看内存不足。
来源5
连接不上用 telnet 127.0.0.1 6379 测试,如果连不上是网络层问题;连得上但redis-cli拒接,是认证或protected-mode。快速修复:redis-cli shutdown,重启服务,然后 redis-server redis.conf --protected-mode no。
来源6
原理科普:Redis重启丢失了fork子进程的监听socket,daemonize yes 会导致这个。改成 daemonize no 前台运行测试。持久化文件锁住也可能,rm -f /var/lib/redis/dump.rdb 解锁。集群模式下slot迁移失败也会连不上。
FAQ
Q: Redis重启后ping不通怎么快速修复?
A: 先 systemctl restart redis,再 netstat查端口,没端口改bind 0.0.0.0重启。
Q: 远程连接失败常见原因?
A: bind只绑127.0.0.1,protected-mode yes,防火墙挡住6379。
Q: 日志在哪里看错误?
A: 默认 /var/log/redis/redis.log 或 redis.conf 的 logfile 配置。
Q: 内存不足导致重启失败?
A: 用 redis-cli info memory 看used_memory,调大maxmemory或加swap。