异步redis的redis/sentinel高可用性包
asyncio-redis-ha的Python项目详细描述
用于PEP 3156python事件循环的高可用性包和sentinel客户端。
此包是asyncio-redis异步、非阻塞客户端的包装器/插件,用于 redis服务器。它依赖于异步(pep 3156),因此需要python 3.3或3.4。如果您是Asyncio新手,那么签出 the asyncio documentation先。
功能
- 异步redis的哨兵支持ontop:
- 角色
- 哨兵
- 从机
- 按名称获取主地址
- 扩展的redis支持(3.x版)
- 角色
- 大部分测试
- 来自asyncio-redis的所有测试都是绿色的
- 涵盖并保证在相同条件下运行的新功能
- 手动测试故障转移方案
依赖关系
带有sentinel解决方案的redis集群需要Redis 3.x
这个包使用并且在很大程度上依赖于asyncio-redis, 因为依赖于包内部 (由于需要更改以支持哨兵操作) 当前要求固定在版本0.14.3
在确保内部兼容后,我将手动更新此依赖项。
路线图
- 在主连接丢失时实现池重新初始化
- 添加重复/回退包装作为包的一部分(coroutine或decorator)
- 为故障转移方案提供自动化测试
- 实现抢占式连接重构 (基于sentinel守护进程的通道事件的即时故障转移检测)
- Hiredis支持
用户指南
用法与asyncio-redis包池对象的用法相同, 除了入口点的初始化之外
初始化连接管理器
c=yield fromConnectionManager.create(cluster_name='mymaster',sentinels=[('172.17.0.4',26379),('172.17.0.6',26379),('172.17.0.7',26379)],poolsize=5)# start using just like asyncio-redisyield fromc.set('key','value')