Python使用RedisJSON存储会话数据时遇socket.gaierror错误求助
解决Redis JSON连接失败(getaddrinfo failed)的方案
核心错误为 redis.exceptions.ConnectionError: Error 11001 connecting to AWS:15177. getaddrinfo failed,本质是程序无法解析Redis主机地址或网络无法连通目标服务,以下是针对性排查和解决步骤:
修正Redis主机地址配置
你当前配置的主机名"AWS"并非有效可解析域名或IP地址:- 若使用AWS ElastiCache Redis,需替换为控制台提供的完整主节点端点(格式类似
xxxxxx.xxxxxx.xxxxxx.cache.amazonaws.com); - 若为本地Redis,直接使用
127.0.0.1或localhost。
- 若使用AWS ElastiCache Redis,需替换为控制台提供的完整主节点端点(格式类似
验证端口有效性
Redis默认端口为6379,你使用的15177需做确认:- 云服务Redis:查看控制台端口配置,确认是否确实使用15177;
- 本地Redis:检查
redis.conf中的port参数,确保与程序配置一致。
测试网络连通性
在运行程序的机器上执行以下命令排查:- 测试地址解析:
若无法解析,排查本地DNS配置或更换IP地址直接连接。ping 你的Redis主机地址 - 测试端口开放情况:
若连接失败,进一步排查:telnet 你的Redis主机地址 端口号 # 或使用nc命令 nc -zv 你的Redis主机地址 端口号- 云服务安全组/防火墙是否允许当前机器IP访问Redis端口;
- 本地机器防火墙是否放行目标端口;
- 内网/VPN环境下,确认网络路由可达Redis服务。
- 测试地址解析:
检查Redis客户端配置
确保ReJSON客户端初始化参数准确,示例如下:from rejson import Client, Path # AWS ElastiCache配置示例 json_client = Client( host='xxxxxx.xxxxxx.xxxxxx.cache.amazonaws.com', port=6379, decode_responses=True )确认Redis服务状态
- 本地Redis:执行
redis-cli ping,返回PONG则说明服务正常运行; - 云服务Redis:查看控制台实例状态是否为"可用"。
- 本地Redis:执行
内容的提问来源于stack exchange,提问作者Dan ndongi
相关产品推荐
相关产品推荐

