【快速解决】Redis配置问题以及解决方法
Redis配置详细步骤笔记
一、问题场景与现象
当项目中出现Redis连接失败,错误日志类似以下信息时,通常是Redis配置不当导致:
Caused by: org.redisson.client.RedisConnectionException: Unable to connect to Redis server:192.1.1.xx:6379
...
Caused by: io.netty.channel.ConnectTimeoutException: connection timed out: 192.1.1.xx:6379
问题场景与现象
问题的原因:Redis默认配置仅监听本地回环地址(127.0.0.1),导致外部(包括局域网内其他设备)无法连接。
二、配置文件定位
Redis在Windows系统中的核心配置文件有两个,需根据启动方式选择对应文件:
文件名 | 适用场景 | 位置 |
---|---|---|
redis.windows.conf | 命令行直接启动(如redis-server redis.windows.conf ) | Redis安装根目录(如D:\redis ) |
redis.windows-service.conf | 作为Windows服务启动(如redis-server --service-start ) | 同上述根目录 |
注意:若通过命令行指定配置文件启动(如redis-server redis.windows.conf
),则优先加载该指定文件。
三、关键配置修改步骤
1. 打开配置文件
- 进入Redis安装目录(如
D:\redis
),找到对应配置文件(以redis.windows.conf
为例) - 用文本编辑器(如记事本、VS Code)打开该文件
2. 修改绑定地址
- 在配置文件中搜索
bind
关键字,默认配置为:# bind 127.0.0.1
- 将其修改为:
说明:bind 0.0.0.0
0.0.0.0
表示Redis监听服务器上所有可用的网络接口,允许来自任意IP的连接(包括本地回环、局域网IP等)
3. 可选:检查保护模式(Protected Mode)
- 配置文件中
protected-mode
参数默认值为yes
,若未设置密码且未指定bind
地址,保护模式会阻止外部连接 - 若已正确设置
bind 0.0.0.0
,保护模式不影响正常连接;若仍有问题,可临时将其改为no
(生产环境建议通过密码增强安全性)
四、配置验证步骤
-
重启Redis服务
- 若Redis正在运行,先停止服务:
- 命令行启动的Redis:按
Ctrl + C
终止 - 服务模式启动的Redis:执行
redis-server --service-stop
- 命令行启动的Redis:按
- 重新启动并指定配置文件:
D:\redis>redis-server redis.windows.conf
- 若Redis正在运行,先停止服务:
-
查看启动日志
-
若启动成功,日志会显示:
[27780] 18 Aug 10:34:23.734 # Creating Server TCP Listening socket 0.0.0.0:6379:bind: No error
-
上述信息表明Redis已成功绑定到
0.0.0.0:6379
,配置生效
-
-
测试连接
- 打开新的命令行窗口,进入Redis目录,使用客户端连接:
D:\redis>redis-cli -h 192.168.1.33 -p 6379
- 若连接成功,输入
ping
命令会返回PONG
- 打开新的命令行窗口,进入Redis目录,使用客户端连接:
五、Redis服务管理命令
1. 启动服务
- 作为Windows服务启动(推荐,后台运行):
redis-server --service-start
- 命令行前台启动(方便查看日志,关闭窗口即停止):
redis-server redis.windows.conf
2. 停止服务
redis-server --service-stop
3. 设置开机自启
- 确保Redis已安装为服务(若未安装,执行
redis-server --service-install redis.windows.conf
) - 执行以下命令设置自动启动:
说明:sc config Redis start= auto
Redis
为默认服务名称,若自定义过服务名,需替换为实际名称
六、注意事项
- 配置修改后必须重启Redis才能生效
- 若服务器开启防火墙,需开放6379端口(TCP协议),否则可能被拦截连接
- 生产环境中,建议结合密码认证(配置
requirepass
参数)增强安全性,避免直接暴露在公网 - 区分配置文件:命令行启动和服务启动可能使用不同配置文件,修改时需对应场景选择