これを実現するには、RedisSentinelを試してみることをお勧めします。
Redis Sentinelは、Redisインスタンスの管理を支援するように設計されたシステムです。次の3つのタスクを実行します。
監視 。 Sentinelは、マスターインスタンスとスレーブインスタンスが期待どおりに機能しているかどうかを常にチェックします。
通知 。 Sentinelは、APIを介して、システム管理者または別のコンピュータープログラムに、監視対象のRedisインスタンスの1つに問題があることを通知できます。
自動フェイルオーバー 。マスターが期待どおりに機能していない場合、Sentinelはフェイルオーバープロセスを開始できます。このプロセスでは、スレーブがマスターに昇格し、他の追加のスレーブが新しいマスターを使用するように再構成され、Redisサーバーを使用するアプリケーションが接続時に使用する新しいアドレスについて通知されます。
...またはZookeeperやJedis_failoverなどの外部ソリューションを使用するには:
JedisPool pool = new JedisPoolBuilder()
.withFailoverConfiguration(
"localhost:2838", // ZooKeeper cluster URL
Arrays.asList( // List of redis servers
new HostConfiguration("localhost", 7000),
new HostConfiguration("localhost", 7001)))
.build();
pool.withJedis(new JedisFunction() {
@Override
public void execute(final JedisActions jedis) throws Exception {
jedis.ping();
}
});
Zookeeper+Redisのこのプレゼンテーションをご覧ください。
[更新] ...またはJedis+Sentinelを使用した純粋なJavaソリューションは、RedisSentinelイベントを処理するラッパーを使用することです。SentinelBasedJedisPoolWrapperを参照してください。