Vous voudrez peut-être essayer Redis Sentinel pour y parvenir :
Redis Sentinel est un système conçu pour faciliter la gestion des instances Redis. Il effectue les trois tâches suivantes :
Surveillance . Sentinel vérifie en permanence si vos instances maître et esclave fonctionnent comme prévu.
Notification . Sentinel peut notifier à l'administrateur système, ou à un autre programme informatique, via une API, qu'il y a un problème avec l'une des instances Redis surveillées.
Basculement automatique . Si un maître ne fonctionne pas comme prévu, Sentinel peut lancer un processus de basculement où un esclave est promu maître, les autres esclaves supplémentaires sont reconfigurés pour utiliser le nouveau maître et les applications utilisant le serveur Redis sont informées de la nouvelle adresse à utiliser lors de la connexion.
... ou d'utiliser une solution externe comme Zookeeper et 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();
}
});
Voir cette présentation de Zookeeper + Redis.
[Mise à jour] ... ou une solution Java pure avec Jedis + Sentinel consiste à utiliser un wrapper qui gère les événements Redis Sentinel, voir SentinelBasedJedisPoolWrapper.