Може да искате да опитате с Redis Sentinel, за да постигнете това:
Redis Sentinel е система, предназначена да помогне при управлението на екземпляри на Redis. Тя изпълнява следните три задачи:
Мониторинг . Sentinel непрекъснато проверява дали вашите главни и подчинени екземпляри работят според очакванията.
Известие . Sentinel може да уведоми системния администратор или друга компютърна програма чрез API, че нещо не е наред с един от наблюдаваните екземпляри на Redis.
Автоматично преминаване при отказ . Ако главен не работи според очакванията, 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.
[Актуализиране] ... или чисто Java решение с Jedis + Sentinel е да използвате обвивка, която обработва събития на Redis Sentinel, вижте SentinelBasedJedisPoolWrapper.