首页/数据/数据库速查/客户端接入哨兵(发现与重连)
Redis 运维与场景124 条

客户端接入哨兵(发现与重连)

客户端先询问哨兵当前主地址再建连,并订阅 +switch-master 或轮询探测;主流客户端库(Jedis/Lettuce/redis-py)均内置哨兵支持。

数据库速查数据更新于 2026-10-12

Python 示例

Python 示例
from redis.sentinel import Sentinel
s = Sentinel([('10.0.0.21',26379),('10.0.0.22',26379),('10.0.0.23',26379)], socket_timeout=1)
master = s.master_for('mymaster', socket_timeout=0.5, password='***')
slave  = s.slave_for('mymaster', socket_timeout=0.5, password='***')
master.set('k','v')
print(slave.get('k'))

校验与手工兜底

校验与手工兜底
redis-cli -p 26379 SENTINEL get-master-addr-by-name mymaster
# 订阅切换事件:
redis-cli -p 26379 PSUBSCRIBE +switch-master
连接池要处理「主库切换」异常:捕获后重新向哨兵要地址;只重连旧地址的池永远连不上新主。

易错点

  • 客户端不订阅事件也不重查:切换后持续报连接错误
  • socket_timeout 设很长:故障时请求堆积,雪崩式超时

数据来源与参考

  • Redis 官方文档: Sentinel 客户端指南
  • redis-py 文档: Sentinel

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌