Bạn đang yêu cầu một giải pháp Active-Active, a.k.a. multi, nhưng câu hỏi của bạn cho thấy bạn có thể không cần nó.
Nếu bạn chỉ yêu cầu một trong các cơ sở dữ liệu có sẵn để ghi, tức là tất cả các lần ghi luôn được thực hiện, bạn có thể đạt được điều đó với bản sao chủ-nô lệ tiêu chuẩn của Redis. Hướng ứng dụng của bạn sử dụng bản gốc để ghi và (có khả năng) để nô lệ của bạn cũng phục vụ một số lượt đọc. Nếu cái chủ không thành công, hãy thăng cấp nô lệ trong DC thứ 2 trở thành cái chính mới và chuyển hướng ứng dụng / máy khách của bạn sử dụng nó. Giám sát và thúc đẩy có thể đạt được với Redis 'Sentinel.
Có một số điều bạn sẽ phải cân nhắc khi triển khai loại thiết lập này. Đầu tiên lưu ý rằng bản sao của Redis là không đồng bộ nên tùy thuộc vào tải của chủ nhân của bạn, khối lượng ghi và chất lượng liên kết mạng của bản sao, bạn có thể mất một số bản cập nhật gần đây trong trường hợp chuyển đổi dự phòng. Thứ hai và về chủ đề tương tự, liên kết mạng liên DC có thể dễ bị giới hạn băng thông và tăng độ trễ - bạn nên định cấu hình Redis để xử lý điều này và có thể sử dụng tính năng nén cho lưu lượng đó (ví dụ:qua đường hầm SSH). Cuối cùng, để phát hiện chính xác các lỗi, bạn sẽ muốn có ít nhất 3 Sentinel ở các vị trí khác nhau. Nhưng bất chấp những thách thức này, đó là tất cả những gì có thể làm được.
Điều đó nói rằng, một thiết lập đa tổng thể, trong đó việc ghi có thể được thực hiện tùy ý đối với bất kỳ cơ sở dữ liệu nào không được hỗ trợ bởi Redis vào lúc này. Nếu đó thực sự là những gì bạn cần, hãy xem xét sử dụng một giải pháp khác.
Lưu ý:tùy thuộc vào yêu cầu chính xác của bạn, nếu bạn có thể đảm bảo rằng việc ghi vào các DC khác nhau là loại trừ lẫn nhau (nghĩa là mỗi DC chỉ được ghi vào một tập con khóa riêng biệt không được chia sẻ bởi DC kia), bạn có thể sử dụng hai cơ sở dữ liệu với một chính trong mỗi DC và nô lệ trong một DC khác.