Potresti provare Redis Sentinel per raggiungere questo obiettivo:
Redis Sentinel è un sistema progettato per aiutare a gestire le istanze Redis. Svolge le seguenti tre attività:
-
Monitoraggio . Sentinel controlla costantemente se le tue istanze master e slave funzionano come previsto.
-
Notifica . Sentinel può notificare all'amministratore di sistema o a un altro programma per computer, tramite un'API, che qualcosa non va in una delle istanze Redis monitorate.
-
Failover automatico . Se un master non funziona come previsto, Sentinel può avviare un processo di failover in cui uno slave viene promosso a master, gli altri slave aggiuntivi vengono riconfigurati per utilizzare il nuovo master e le applicazioni che utilizzano il server Redis vengono informate del nuovo indirizzo da utilizzare durante la connessione.
... o per utilizzare una soluzione esterna come Zookeeper e 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();
}
});
Guarda questa presentazione di Zookeeper + Redis.
[Aggiorna] ... o una soluzione Java pura con Jedis + Sentinel consiste nell'usare un wrapper che gestisce gli eventi Redis Sentinel, vedere SentinelBasedJedisPoolWrapper.