Navicat 16 不支持自动处理 MOVED 或 ASK 重定向,因其未实现集群协议跳转逻辑,不维护槽位映射表,也不发送 ASKING 命令或重连目标节点;它仅将所填主节点地址作为备选列表,无法解析重定向响应,导致请求落到非首节点时直接报错或静默失败。

Navicat 16 不支持自动处理 MOVED 或 ASK 重定向,这不是配置错误,而是它压根没实现集群协议的跳转逻辑——连槽位映射表都不维护,更不会发 ASKING 命令或重连目标节点。
为什么 Navicat 连 Redis 集群总卡在“key 找不到”或报 Unknown Internal Error
根本原因在于:Navicat 的「Redis (Cluster)」类型只是把多个主节点地址当“备选列表”用,不解析 -MOVED 12345 192.168.1.11:7002 这类响应,收到就直接报错或静默失败。
- 你填了
192.168.1.10:7001,192.168.1.11:7001,192.168.1.12:7001,但 Navicat 并不会主动查CLUSTER NODES更新拓扑,也不会按 slot 路由请求 - 哪怕所有节点 IP/端口都通、密码统一、防火墙放行 7001 和 17001,只要请求落到非首节点,就大概率触发重定向失败
-
Unknown Internal Error是 Navicat 16.2.5+ 对底层协议异常的兜底提示,实际可能对应MOVED、ASK、ACL 拒绝或时钟漂移
必须手动满足的三个硬性前提
即使放弃自动路由,想让 Navicat 至少连上并执行部分操作,以下条件缺一不可:
-
Connection Type必须选 Redis (Cluster),不能是 Standalone 或 Sentinel -
Host栏填的是所有主节点地址(不含从节点),用英文逗号分隔,例如:192.168.1.10:7001,192.168.1.11:7001,192.168.1.12:7001 - 所有主节点 requirepass 密码必须完全一致;若启用 ACL,则
default用户需有~*权限,否则连INFO都被拒 - 各节点系统时间偏差不能超过 5 秒(
chronyd或ntpd必须运行且同步正常)
绕过重定向失败的实操止损点
Navicat 本身无法修复路由问题,但可以关掉触发重定向的高频行为,避免连接后立即报错:
- 关闭「Auto-refresh keys list」:该功能默认发
KEYS *,云厂商(如阿里云 Tair、腾讯云 Tendis)普遍禁用此命令,一刷就超时或断连 - 不要依赖「Browse Keys」视图查全量 key;改用右键菜单 → 「Run Command Line」手动执行
SCAN 0 MATCH user:* COUNT 100 - 确认云平台白名单已加对公网 IP(不是局域网 IP),且实例未强制开启 SSL —— 若开了,Navicat 必须勾选
Use SSL - 避免使用
Database下拉框切换 db 编号:Redis 集群不支持多 database,只认 db0,选其他会静默失败
真正能跨节点路由的替代方案
如果你需要可靠执行 SCAN、Pipeline、Lua 脚本,或依赖 key 自动路由到对应节点,Navicat 就不该出现在工具链里。
- 本地开发用
redis-cli -c -h 192.168.1.10 -p 7001 -a "pwd",-c参数才是真集群模式 - 脚本或 CI 环境用
go-redis、lettuce、redis-py-cluster这类原生支持集群协议的客户端 - 管理界面可换
RedisInsight(官方免费)或Medis,它们会主动维护槽映射并自动重定向
别在 Navicat 上调参数试图“骗过”重定向——它的架构决定了这事做不到。重点应放在:用对工具、关掉高危自动行为、确认服务端基础状态(时间、ACL、网络)是否干净。











