您可能想尝试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的此演示文稿。
[更新] …或Jedis + Sentinel的纯Java解决方案是使用处理Redis
Sentinel事件的包装器,请参见SentinelbasedJedisPoolWrapper。



