首页/数据/Redis 进阶速查/查询当前主库地址
主从与哨兵51 条

查询当前主库地址

SENTINEL GET-MASTER-ADDR-BY-NAME <name> 返回当前主库的 ip 与 port,是客户端与运维脚本在切换后重新定位主库的标准入口。

Redis 进阶速查数据更新于 2026-10-13

查询当前主库地址

SENTINEL GET-MASTER-ADDR-BY-NAME 按监控对象名称返回当前主库的地址,是客户端与运维脚本在切换后重新定位主库的标准入口。返回值一般是两行:ip 与端口。命令本身很简单,但有两个容易忽视的边界:切换进行中查询可能拿到尚未更新的旧地址;名称拼错时返回空值而不是报错。因此脚本必须做空值判断,并在使用地址后准备好连接失败的重试逻辑。

基本信息

命令SENTINEL GET-MASTER-ADDR-BY-NAME <master-name>
返回ip 与端口两行
名称不存在返回空值,而不是报错
切换期间可能仍返回旧地址
配套机制订阅 +switch-master 事件刷新缓存

典型使用场景

  • 客户端启动时确定初始的主库地址
  • 运维脚本在切换后重新定位主库并做连通性检查
  • 巡检脚本对比哨兵报告的主库与实际连接的主库是否一致
  • 故障复盘中还原切换前后的地址变化过程
  • 多套主从环境按名称批量查询各自主库地址

查询与应对

查询与应对
redis-cli -p 26379 SENTINEL GET-MASTER-ADDR-BY-NAME mymaster
redis-cli -p 26379 SENTINEL MASTER mymaster | grep -E 'flags|num-slaves'
redis-cli -p 26379 SENTINEL GET-MASTER-ADDR-BY-NAME typo-name   # 返回空值
redis-cli -p 26379 SUBSCRIBE +switch-master                     # 配合事件刷新
redis-cli -h <查询到的地址> PING                                # 使用前先验证连通

返回情况与应对

情况返回应对
正常ip 与端口两行直接使用,并缓存
名称不存在空值脚本显式判断,避免拿空值连接
切换进行中可能是旧地址连接失败后重新查询再重试
切换已完成新地址刷新本地缓存与连接池
客户端库通常封装了这个查询并缓存结果,缓存的有效期与刷新时机比查询本身更重要:收到切换事件后立即刷新,遇到只读类错误或重定向时也应重新查询一次。
这套机制只在哨兵模式下成立。集群模式定位主库的方式完全不同(客户端维护路由表并跟随重定向更新),不要把两种模式的定位逻辑混用在同一个客户端里。

易错点

  • 脚本不判断空值,名称拼错时拿着空地址去连接,报出难以理解的错误
  • 切换瞬间查到旧地址就直接使用且没有重试机制,请求直接失败
  • 只连接一台哨兵做查询,那台哨兵故障后客户端无法定位主库
  • 缓存主库地址却没有失效机制,切换后长期路由到已经降级的旧主库

数据来源与参考

  • Redis 官方文档:SENTINEL GET-MASTER-ADDR-BY-NAME 命令
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌