redis master 可以通过 sentinel 使用:
from redis.sentinel import Sentinel
sentinel = Sentinel([('127.0.0.1', 26379)])
master_server = sentinel.master_for('mymaster')
现在将数据写入主节点:
master_server.setex(key, 120, value)
# do something
master_server.setex(key, 120, new_value)
现在, while # do something
,如果master_server
崩溃,sentinel
将通过投票将一个奴隶提升为主人。因此,master_server.setex(key, 120, new_value)
将抛出MasterNotFoundError。
一种解决方法是尝试捕获此块;有没有办法让redis自动处理主发现?由于在代码中到处放置try-catch会使代码变得多余和混乱。