您正在寻求一种主动-主动(又称为多主设备)解决方案,但您的问题表明您可能不需要它。
如果只要求其中一个数据库可用于写操作,即所有写操作都可以进行,则可以使用Redis的标准主从复制来实现。指导您的应用程序使用主服务器进行写入,并(有可能)让您的从服务器也进行某些读取。如果主服务器发生故障,则将第二个DC中的从服务器升级为新的主服务器,并重定向您的应用程序/客户端以使用它。使用Redis的Sentinel可以实现监视和提升。
实施这种类型的设置时,您需要考虑一些事项。首先请注意,Redis的复制是异步的,因此根据您的主服务器的负载,写入量和复制的网络链接质量,在发生故障转移的情况下,您可以放弃一些最近的更新。其次,在同一主题上,DC间的网络链接可能倾向于受限的带宽和增加的延迟- 您应配置Redis来处理此问题,并可能对该流量使用压缩(例如,通过SSH隧道)。最后,要准确检测故障,您需要在不同位置至少有3个Sentinel。尽管有这些挑战,但这都是可行的。
也就是说,Redis 支持可对任何数据库进行任意写入的多主机设置。如果实际上是您需要的,请考虑使用其他解决方案。
注意:根据您的确切要求,如果可以保证对不同DC的写入是互斥的(即,每个DC仅可写入另一个DC不共享的键的不同子集),则可以将两个数据库与主数据库一起使用在每个DC中,在从属设备中。