Du beder om en Active-Active, også kaldet multimaster, løsning, men dit spørgsmål tyder på, at du måske ikke har brug for det.
Hvis du kun kræver, at en af databaserne er tilgængelig for skrivning, dvs. alle skrivninger går altid, kan du opnå det med Redis' standard master-slave-replikering. Henvis din applikation til at bruge masteren til at skrive, og (potentielt) få din slave også til at tjene nogle af læsningerne. Hvis masteren fejler, skal du fremme slaven i 2ndary DC til at være den nye master og omdirigere din applikation/klienter til at bruge den. Overvågning og promovering kan opnås med Redis' Sentinel.
Der er et par ting, du skal tage i betragtning, når du implementerer denne type opsætning. Bemærk først, at Redis' replikering er asynkron, så afhængigt af din masters belastning, mængden af skrivninger og replikeringens netværkslinkkvalitet, kan du miste nogle af de seneste opdateringer i tilfælde af en failover. For det andet og om samme emne, kan en inter-DC netværksforbindelse være tilbøjelig til begrænset båndbredde og øget latens - du bør konfigurere Redis til at håndtere dette og måske bruge komprimering til den trafik (f.eks. via en SSH-tunnel). Til sidst, for nøjagtigt at opdage fejl, skal du have mindst 3 Sentinels forskellige steder. Men på trods af disse udfordringer kan det hele lade sig gøre.
Når det er sagt, er en multimaster-opsætning, hvor skrivning kan udføres vilkårligt mod enhver database, ikke støttet af Redis i øjeblikket. Hvis det faktisk er det, du har brug for, så overvej at bruge en anden løsning.
Bemærk:afhængigt af dine nøjagtige krav, hvis du kan garantere, at skrivning til forskellige DC'er er gensidigt udelukkende (dvs. hver DC får kun skrivninger til et særskilt undersæt af nøgler, der ikke deles af den anden DC), kan du bruge to databaser med en master i hver DC og slaven i den anden.