sql >> Databasteknik >  >> NoSQL >> Redis

Använda Redis Replication på olika maskiner (multi master)

Du ber om en Active-Active, a.k.a. multimaster-lösning, men din fråga tyder på att du kanske inte behöver den.

Om du bara kräver att en av databaserna ska vara tillgänglig för skrivning, d.v.s. alla skrivningar går alltid, kan du uppnå det med Redis standard master-slave replikering. Anvisa din applikation att använda mastern för att skriva och (potentiellt) låt din slav också tjäna några av läsningarna. Om mastern misslyckas, befordra slaven i den andra DC att bli den nya mastern och dirigera om din applikation/klienter att använda den. Övervakning och marknadsföring kan uppnås med Redis Sentinel.

Det finns några saker du måste ta hänsyn till när du implementerar den här typen av inställningar. Observera först att Redis replikering är asynkron, så beroende på din masters belastning, skrivvolymen och replikeringens nätverkslänkkvalitet kan du förlora några av de senaste uppdateringarna i händelse av en failover. För det andra och om samma ämne, kan en inter-DC-nätverkslänk vara utsatt för begränsad bandbredd och ökad latens - du bör konfigurera Redis för att hantera detta och kanske använda komprimering för den trafiken (t.ex. via en SSH-tunnel). Slutligen, för att korrekt upptäcka fel måste du ha minst 3 Sentinels på olika platser. Men trots dessa utmaningar är allt möjligt.

Som sagt, en multimaster-inställning där skrivningar kan göras godtyckligt mot vilken databas som helst är det inte stöds av Redis för tillfället. Om det verkligen är vad du behöver, överväg att använda en annan lösning.

Obs:beroende på dina exakta krav, om du kan garantera att skrivningar till olika DC:er är ömsesidigt uteslutande (dvs varje DC får skrivningar endast till en distinkt delmängd av nycklar som inte delas av den andra DC), kan du använda två databaser med en master i varje DC och slaven i den andra.




  1. Redis Store (eller någon databas?) Låsmekanism (NodeJS)

  2. MongoDB:Hur uppdaterar jag ett enstaka delelement i en array, refererat till av indexet i arrayen?

  3. Beräkna medelvärdet av fält i inbäddade dokument/array

  4. MongoDB - Motsvarighet till LEFT JOIN där en samling inte finns