python操作redis-sentinel集群

本文介绍如何使用Python的Redis客户端连接哨兵服务器,通过示例代码演示了如何获取主服务器和从服务器地址,以及如何在主服务器上进行写入操作和在从服务器上进行读取操作。

1.安装Python-Redis客户端:

   pip install redis

2. API操作:

   

import redis
from redis.sentinel import Sentinel

# 连接哨兵服务器(主机名也可以用域名)
sentinel = Sentinel([('192.168.31.87', 26379),('192.168.31.88', 26379)],socket_timeout=0.5)

# 获取主服务器地址
master = sentinel.discover_master('mymaster')
print(master)
# 输出:('192.168.31.87', 26379)
# 获取从服务器地址
slave = sentinel.discover_slaves('mymaster')
print(slave)
# 输出:[('192.168.31.88', 26379)]


# 获取主服务器进行写入
master = sentinel.master_for('mymaster', socket_timeout=0.5, password='123', db=15)
w_ret = master.set('foo', 'bar')
# 输出:True


# # 获取从服务器进行读取(默认是round-roubin)
slave = sentinel.slave_for('mymaster', socket_timeout=0.5, password='123', db=15)
r_ret = slave.get('foo')
print(r_ret)
# # 输出:bar

 

### Redis SentinelSentinel 的区别及关系 #### 1. 名称上的差异 Redis SentinelSentinel 实际上指的是同一个概念。Redis SentinelRedis 提供的一种高可用解决方案,而“Sentinel”则是这一机制的核心组件名称。因此,“Redis Sentinel”通常用于描述整体架构或功能集合,而“Sentinel”则更倾向于指代具体的进程实例。 #### 2. 功能定位 Redis Sentinel 的主要职责是监控 Redis 集群中的主从节点状态,并在发生故障时自动执行故障转移操作。具体来说: - **监控(Monitoring)**: 每个 Sentinel 进程定期向 Redis 节点发送 `PING` 命令以检测其健康状况[^1]。 - **通知(Notification)**: 当被监控的主服务器出现问题时,Sentinel 可以通过 API 或其他方式通知管理员或其他应用程序。 - **故障转移(Failover)**: 如果主服务器被认为处于客观下线(ODOWN),Sentinel 就会在从服务器中选举一个新的主服务器并更新客户端配置[^2]。 #### 3. 主观下线 (SDOWN) 与客观下线 (ODOWN) - SDOWN 表示单个 Sentinel 认为主机不可达的状态,这种判断仅依赖于当前 Sentinel 自己的 PING 测试结果[^1]。 - ODOWN 则意味着大多数 Sentinels 已经达成共识,确认目标主机确实无法访问。只有达到此阶段后才会启动实际的 failover 流程[^1]。 #### 4. 故障转移过程中的角色分配 在一个典型的 Redis Sentinel 架构里,存在多个 Sentinel 实例协同工作。这些实例之间也会相互沟通交流各自所掌握的信息以便更好地完成任务。例如,在决定哪个 slave 成为新的 master 之前,它们会举行所谓的“仲裁会议”,即依据一定的算法选出最合适的候选者作为新任 leader 来接管服务请求[^2]。 ```python import redis from redis.sentinel import Sentinel sentinel = Sentinel([('localhost', 26379)], socket_timeout=0.1) master = sentinel.master_for('mymaster', db=0, password='password') slave = sentinel.slave_for('mymaster', db=0, password='password') print(master.get('key')) ``` 以上代码片段展示了如何利用 Python 库连接到由 Redis Sentinel 管理的一个 Redis Master-Slaves 系统当中去读取数据。 #### 5. 总结两者的关系 实际上并没有严格意义上的“Redis Sentinel”和单独存在的另一个叫作“Sentinel”的东西;而是前者代表了一整套围绕后者构建起来的服务体系——其中包含了若干运行着名为‘redis-sentinel’程序文件的独立进程实体们共同协作保障业务连续性的能力体现形式而已! ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值