Redis连接被拒绝(Connection refused)问题的完整解决指南

 更新时间:2025年11月21日 08:24:37   作者:Bruce_xiaowei  
这篇文章主要介绍了Redis连接被拒绝问题的诊断和解决流程,涵盖了服务未运行、配置限制、防火墙阻挡、资源不足等常见原因,并提供了相应的解决方案和安全配置建议,需要的朋友可以参考下

问题现象

当尝试连接Redis时出现以下错误:

Could not connect to Redis at 192.168.1.48:6379: Connection refused

问题诊断流程

1. 基础状态检查

# 检查Redis服务状态
systemctl status redis

# 检查Redis是否安装
redis-server --version
redis-cli --version
which redis-server

# 检查Redis进程
ps aux | grep redis
pgrep -lf redis

# 检查端口监听状态
netstat -tlnp | grep 6379
ss -tlnp | grep 6379

2. 连接测试

# 本地连接测试
redis-cli ping

# 远程连接测试
redis-cli -h 目标IP ping

常见原因及解决方案

情况一:Redis服务未安装

症状redis-server --version命令无输出

解决方案

# Ubuntu/Debian
sudo apt update && sudo apt install redis-server

# CentOS/RHEL
sudo yum install redis
# 或
sudo dnf install redis

情况二:Redis服务未启动

症状:服务已安装但进程不存在

解决方案

# 临时启动Redis
redis-server --daemonize yes

# 或使用配置文件启动
redis-server /etc/redis/redis.conf

# 创建系统服务(推荐)
sudo systemctl enable redis
sudo systemctl start redis

情况三:配置限制

症状:本地可连接,远程无法连接

解决方案
编辑Redis配置文件 /etc/redis/redis.conf

# 允许远程连接
bind 0.0.0.0

# 关闭保护模式(测试环境)
protected-mode no

# 设置密码(可选)
requirepass yourpassword

# 后台运行
daemonize yes

重启服务使配置生效:

sudo systemctl restart redis
# 或
pkill redis-server && redis-server /etc/redis/redis.conf

情况四:防火墙阻挡

症状:服务运行正常但无法连接

解决方案

# 检查防火墙状态
sudo ufw status
sudo iptables -L

# 开放Redis端口
sudo ufw allow 6379
# 或
sudo iptables -A INPUT -p tcp --dport 6379 -j ACCEPT

# 永久保存iptables规则
sudo service iptables save  # CentOS
# 或安装iptables-persistent (Ubuntu/Debian)

情况五:服务配置问题

创建完整的systemd服务文件

sudo cat > /etc/systemd/system/redis.service << EOF
[Unit]
Description=Redis In-Memory Data Store
After=network.target

[Service]
Type=forking
ExecStart=/usr/bin/redis-server /etc/redis/redis.conf
ExecStop=/usr/bin/redis-cli shutdown
Restart=always
User=redis
Group=redis
RuntimeDirectory=redis
RuntimeDirectoryMode=0755

[Install]
WantedBy=multi-user.target
EOF

启用服务:

sudo systemctl daemon-reload
sudo systemctl enable redis
sudo systemctl start redis

高级排查技巧

1. 查看Redis日志

# 查看系统日志
sudo journalctl -u redis

# 或查看Redis日志文件
sudo tail -f /var/log/redis/redis-server.log

2. 检查资源限制

# 检查内存
free -h

# 检查磁盘空间
df -h

# 检查文件描述符限制
ulimit -n

3. 网络诊断

# 测试端口连通性
telnet 目标IP 6379
nc -zv 目标IP 6379

# 检查端口占用
sudo lsof -i :6379

4. 配置验证

# 检查配置文件语法
redis-check-rdb /etc/redis/redis.conf

# 测试配置
redis-server /etc/redis/redis.conf --test

安全配置建议

1. 生产环境安全设置

# 在redis.conf中设置
requirepass 强密码
rename-command FLUSHALL ""
rename-command CONFIG ""
bind 指定IP地址
port 自定义端口

2. 网络隔离

# 使用防火墙限制访问IP
sudo ufw allow from 信任IP to any port 6379

# 或使用iptables
sudo iptables -A INPUT -p tcp -s 信任IP --dport 6379 -j ACCEPT

自动化监控脚本

创建健康检查脚本:

#!/bin/bash
REDIS_HOST="localhost"
REDIS_PORT="6379"

if redis-cli -h $REDIS_HOST -p $REDIS_PORT ping | grep -q "PONG"; then
    echo "Redis is running"
    exit 0
else
    echo "Redis is down"
    # 尝试重启
    sudo systemctl restart redis
    exit 1
fi

总结

Redis连接被拒绝问题通常由以下原因引起:

  1. 服务未运行 - 启动Redis服务
  2. 配置限制 - 修改绑定地址和保护模式
  3. 防火墙阻挡 - 开放相应端口
  4. 资源不足 - 检查系统资源

通过系统化的诊断流程,可以快速定位并解决问题。建议在生产环境中配置适当的监控和告警机制,确保Redis服务的稳定性。

记住:在修改配置后务必重启Redis服务,并在生产环境中谨慎修改安全相关配置。

以上就是Redis连接被拒绝(Connection refused)问题的完整解决指南的详细内容,更多关于Redis连接被拒绝的资料请关注脚本之家其它相关文章!

相关文章

  • 详解Redis使用认证密码登录

    详解Redis使用认证密码登录

    本篇文章主要介绍了详解Redis使用认证密码登录 。启用Redis的认证密码可以增加Redis服务器的安全性。有兴趣的可以了解下
    2017-06-06
  • Redis持久化方式之RDB和AOF的原理及优缺点

    Redis持久化方式之RDB和AOF的原理及优缺点

    在Redis中,数据可以分为两类,即内存数据和磁盘数据,Redis 提供了两种不同的持久化方式,其中 RDB 是快照备份机制,AOF 则是追加写操作机制,本文将详细给大家介绍Redis 持久化方式RDB和AOF的原理及优缺点,感兴趣的同学可以跟着小编一起来学习
    2023-06-06
  • Redis中lua脚本实现及其应用场景

    Redis中lua脚本实现及其应用场景

    本文主要介绍了Redis中lua脚本实现及其应用场景,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-04-04
  • Redis消息队列、阻塞队列、延时队列的实现

    Redis消息队列、阻塞队列、延时队列的实现

    Redis是一种常用的内存数据库,它提供了丰富的功能,通常用于数据缓存和分布式队列,本文主要介绍了Redis消息队列、阻塞队列、延时队列的实现,感兴趣的可以了解一下
    2023-11-11
  • Redis处理MQ消费幂等的实现示例

    Redis处理MQ消费幂等的实现示例

    本文主要介绍了Redis处理MQ消费幂等的实现示例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2025-05-05
  • CentOS 7下安装 redis 3.0.6并配置集群的过程详解

    CentOS 7下安装 redis 3.0.6并配置集群的过程详解

    这篇文章主要给大家介绍了CentOS 7下安装 redis 3.0.6并配置集群的过程,文中通过示例代码和详细的步骤介绍的很相信,对大家具有一定的参考价值,有需要的朋友们下面来一起看看吧。
    2017-01-01
  • Redis异步队列的实现及应用场景

    Redis异步队列的实现及应用场景

    异步队列是一种底层基于异步 I/O 模型的消息队列,用于在分布式系统中进行同步和异步的通讯和协作,本文主要介绍了Redis异步队列的实现及应用场景,感兴趣的可以了解一下
    2023-12-12
  • Redis常见限流算法原理及实现

    Redis常见限流算法原理及实现

    这篇文章主要介绍了Redis常见限流算法原理及实现,限流简称流量限速(Rate Limit)是指只允许指定的事件进入系统,超过的部分将被拒绝服务、排队或等待、降级等处理
    2022-08-08
  • CentOS 6.6下Redis安装配置记录

    CentOS 6.6下Redis安装配置记录

    这篇文章主要介绍了CentOS 6.6下Redis安装配置记录,本文给出了安装需要的支持环境、安装redis、测试Redis、配置redis等步骤,需要的朋友可以参考下
    2015-03-03
  • Redis数据库的应用场景介绍

    Redis数据库的应用场景介绍

    这篇文章主要介绍了Redis数据库的应用场景介绍,本文讲解了MySql+Memcached架构的问题、Redis常用数据类型、Redis数据类型应用和实现方式、Redis实际应用场景等内容,需要的朋友可以参考下
    2015-06-06

最新评论