使用python链接redis sentinel

2017/12/23 posted in  Redis
Tags: 

from redis.sentinel import Sentinel // 导入sentinel包
sentinel = Sentinel([('10.60.0.16',6388)],socket_timeout=0.1) // 获取sentinel的链接
sentinel.discover_master('sentinel-10.60.0.16-6386') // 获取master地址
sentinel.discover_slaves('sentinel-10.60.0.16-6386') // 获取slave地址
master = sentinel.master_for('sentinel-10.60.0.16-6386',socket_timeout=0.1) //获取master的连接
slave = sentinel.slave_for('sentinel-10.60.0.16-6386',socket_timeout=0.1) // 获取slave的连接
master.set('name','alex') // 向master插入一个值
slave.get('name') // 从slave获取该值

进入master实例,使用shutdown命令关闭master实例,再次使用master.get('name')命令从master实例取值,python报错Connection refused,可见由于master宕机,导致连接断开。

过了几秒后再次执行master.get('name')命令,命令正常返回值,sentinel已经进行了failover处理,并且master连接重新连接到了新的master实例