Du kanske vill prova Redis Sentinel för att uppnå det:
Redis Sentinel är ett system utformat för att hjälpa till att hantera Redis-instanser. Det utför följande tre uppgifter:
Övervakning . Sentinel kontrollerar hela tiden om dina master- och slavinstanser fungerar som förväntat.
Meddelande . Sentinel kan meddela systemadministratören, eller ett annat datorprogram, via ett API, att något är fel med en av de övervakade Redis-instanserna.
Automatisk failover . Om en master inte fungerar som förväntat kan Sentinel starta en failover-process där en slav befordras till master, de andra extra slavarna konfigureras om för att använda den nya mastern och applikationerna som använder Redis-servern informeras om den nya adressen som ska användas vid anslutning.
... eller för att använda en extern lösning som Zookeeper och 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();
}
});
Se denna presentation av Zookeeper + Redis.
[Uppdatera] ... eller en ren Java-lösning med Jedis + Sentinel är att använda en wrapper som hanterar Redis Sentinel-händelser, se SentinelBasedJedisPoolWrapper.