Bạn có thể muốn thử Redis Sentinel để đạt được điều đó:
Redis Sentinel là một hệ thống được thiết kế để giúp quản lý các phiên bản Redis. Nó thực hiện ba nhiệm vụ sau:
Giám sát . Sentinel liên tục kiểm tra xem các phiên bản chủ và phụ của bạn có hoạt động như mong đợi hay không.
Thông báo . Sentinel có thể thông báo cho quản trị viên hệ thống hoặc một chương trình máy tính khác thông qua API rằng có gì đó không ổn với một trong các phiên bản Redis được giám sát.
Tự động chuyển đổi dự phòng . Nếu một chủ không hoạt động như mong đợi, Sentinel có thể bắt đầu quá trình chuyển đổi dự phòng trong đó một nô lệ được thăng cấp thành chủ, các nô lệ bổ sung khác được cấu hình lại để sử dụng chủ mới và các ứng dụng sử dụng máy chủ Redis được thông báo về việc sử dụng addressto mới khi kết nối.
... hoặc sử dụng giải pháp bên ngoài như Zookeeper và 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();
}
});
Xem bản trình bày này của Zookeeper + Redis.
[Cập nhật] ... hoặc giải pháp Java thuần túy với Jedis + Sentinel là sử dụng trình bao bọc để xử lý các sự kiện Redis Sentinel, hãy xem SentinelBasedJedisPoolWrapper.