Redis Sentinel从Slaves读取写入Master

时间:2016-05-30 16:20:03

标签: redis jedis redis-sentinel

我们当前的Redis设置是一个Web应用程序客户端,使用Jedis直接连接一个JedisPool用于写入单个Redis主服务器,第二个JedisPool用于从单个Redis从服务器读取。从站设置为复制主站。

我们正在转向在客户端上使用JedisSentinelPool并引入Sentinel以更干净地处理故障转移。据我所知,似乎JedisSentinelPool只与当前选出的主设备通信,所以现在所有的写入/读取都转到主设备上。与之前的读取可以分配给从属的情况相比。

有没有办法使用JedisSentinelPool将读取分发给从属设备以实现负载平衡?或者有必要使用JedisPool手动实现(如前所述)在这种情况下,如果主服务器失败,JedisSentinelPool现在将指向旧的从服务器(新主服务器),JedisPool仍然会笨拙地指向旧服务器,并且有效旧的奴隶(新主人)现在会处理读写吗?

Redis Sentinel(或其他)是否具有任何负载平衡(而不是故障转移)功能?我们目前只有一个奴隶,可以添加更多的奴隶用于负载平衡吗?如果是这样,推荐的配置是什么?

任何建议,现实世界的经验都将受到赞赏。

1 个答案:

答案 0 :(得分:0)

我写了一个新的JedisSentinelPool,可以从slave读取负载均衡,从master写入,它使用redis订阅slave,我在我的Web应用程序中使用它,参见代码github sentinel-slave-jedis-pool