Redis Cluster för sharding
Implementera Redis Cluster för att dela upp data över flera noder och uppnå horisontell skalning samt feltålighet.
Redis Cluster för sharding är en gratis lektion i Redis: cachelagring och meddelanden (Pub/Sub, Streams) på CoddyKit. Detta är lektion 3 av 4. Du kan läsa vilka 3 lektioner som helst i den här lärvägen kostnadsfritt i sin helhet – därefter låser CoddyKit PRO upp alla lektioner, plus praktisk övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Den ingår i lärvägen för Redis: cachelagring och meddelanden (Pub/Sub, Streams), och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Redis: cachelagring och meddelanden (Pub/Sub, Streams) innehåller totalt 4 lektioner.
Skala bortom en enda nod
Hittills har vi lärt oss om Redis-replikering och Sentinel för hög tillgänglighet. Dessa lösningar är utmärkta för redundans och läsningsskalning, men hur gör man med skrivskalning eller datauppsättningar som är större än minnet på en enda server?
Det är här Redis Cluster kommer in. Det är utformat för att tillhandahålla horisontell skalning och feltålighet genom att fördela data över flera Redis-instanser.
Vad är sharding?
I grunden använder Redis Cluster sharding (även kallat datapartitionering). Föreställ er att ni har ett enormt bibliotek med böcker.
- I stället för en enda jättestor hylla delar ni upp böckerna på många mindre hyllor.
- Varje hylla innehåller en del av böckerna och en bibliotekarie ansvarar för den hyllan.
I Redis Cluster fungerar varje Redis-instans (eller nod) som en ”bibliotekarie” som hanterar en ”hylla” med era data. På så sätt kan ni skala både minne och processor.
Redis Cluster-arkitektur
Ett Redis Cluster är en samling sammankopplade Redis-instanser. Varje instans kan vara en master eller en replika.
- Masternoder: Dessa noder innehåller och hanterar en del av datauppsättningen.
- Repliknoder: Dessa är kopior av masternoder och ger hög tillgänglighet. Om en master slutar fungera kan en av dess repliker befordras till att ta dess plats.
Klustret säkerställer att data fördelas och kan fortsätta fungera även om vissa noder slutar fungera.
Hashplatser: Så fördelas data
Hur vet Redis vilken nod som lagrar vilken del av datan? Det använder hashplatser.
- Hela datauppsättningen delas upp i 16 384 logiska platser (från 0 till 16383).
- Varje masternod i klustret ansvarar för en delmängd av dessa hashplatser.
- När ni lagrar en nyckel beräknar Redis en hash av nyckeln för att avgöra vilken plats den tillhör.
- Denna plats kopplas sedan till en specifik masternod.
Detta system möjliggör flexibel datafördelning och enkel ombalansering.
Skapa ett Redis Cluster
För att skapa ett kluster behöver ni minst tre masternoder för en feltålig konfiguration (varje master kan ha repliker). Här är ett konceptuellt CLI-kommando med redis-cli:
redis-cli --cluster create 127.0.0.1:7000 127.0.0.1:7001 127.0.0.1:7002 --cluster-replicas 1
- Detta kommando skapar ett kluster med tre masterinstanser (på portarna 7000, 7001 och 7002).
--cluster-replicas 1innebär att varje master får en repliknod.
Verktyget redis-cli tilldelar automatiskt hashplatser till masternoderna.
Klientinteraktion och omdirigering
När en klient vill interagera med Redis Cluster kan den ansluta till vilken nod som helst. Om nyckeln som klienten efterfrågar inte tillhör den anslutna nodens hashplatser svarar noden med ett MOVED-omdirigeringsfel.
Moderna Redis-klientbibliotek (som Jedis för Java) är klustermedvetna. De hanterar automatiskt dessa omdirigeringar genom att:
- Lära sig klustrets topologi (vilken nod som äger vilka hashplatser).
- Ansluta direkt till rätt nod för en viss nyckel.
Det gör det förvånansvärt enkelt för utvecklare att interagera med ett kluster.
Anslut med en Java-klient
Nu ska vi se hur en Java-klient (med Jedis-biblioteket) ansluter till ett Redis Cluster. Klienten behöver känna till minst en nod i klustret för att upptäcka hela topologin.
Prova att köra detta exempel:
import redis.clients.jedis.HostAndPort;
import redis.clients.jedis.JedisCluster;
import java.util.HashSet;
import java.util.Set;
public class RedisClusterClient {
public static void main(String[] args) {
// Provide at least one node to connect to the cluster
Set<HostAndPort> jedisClusterNodes = new HashSet<>();
jedisClusterNodes.add(new HostAndPort("127.0.0.1", 7000)); // Example node
try (JedisCluster jc = new JedisCluster(jedisClusterNodes)) {
System.out.println("Connected to Redis Cluster!");
String key = "user:100:name";
String value = "Alice";
jc.set(key, value);
System.out.println("Set: " + key + " = " + value);
String retrievedValue = jc.get(key);
System.out.println("Get: " + key + " = " + retrievedValue);
// Client automatically handles sharding for different keys
jc.set("product:5:price", "99.99");
System.out.println("Set: product:5:price = " + jc.get("product:5:price"));
} catch (Exception e) {
System.err.println("Error connecting to Redis Cluster: " + e.getMessage());
System.err.println("Ensure a Redis Cluster is running on 127.0.0.1:7000");
}
}
}Resharding och ombalansering
En av de kraftfulla funktionerna i Redis Cluster är möjligheten att utföra resharding. Det innebär att ni dynamiskt kan lägga till eller ta bort noder från klustret medan det körs.
- När ni lägger till nya masternoder kan ni migrera hashplatser från befintliga masterinstanser till de nya.
- När ni tar bort noder kan deras hashplatser flyttas till andra kvarvarande masterinstanser.
Detta gör det möjligt att flexibelt skala klustrets resurser upp eller ner utan driftstopp.
Feltålighet i klustret
Redis Cluster erbjuder robust feltålighet:
- Om en masternod slutar fungera befordras dess tilldelade replika automatiskt till ny master.
- Klustret fortsätter att fungera eftersom hashplatserna som tidigare hanterades av den felaktiga mastern nu hanteras av den befordrade replikan.
Om däremot en master och alla dess repliker slutar fungera blir den del av datan som hanteras av masterns hashplatser otillgänglig, och klustret kan sluta fungera om det inte har konfigurerats på annat sätt (cluster-require-full-coverage no).
Testa era kunskaper om kluster
Vilka av följande är huvudsakliga fördelar med eller kännetecken för Redis Cluster?
Sammanfattning: Redis Cluster för skalning
I den här lektionen utforskade vi Redis Cluster, en kraftfull lösning för horisontell skalning av Redis. Vi lärde oss följande:
- Klustret använder sharding för att fördela data över flera masternoder.
- Hashplatser avgör vilken nod som lagrar en viss nyckel.
- Klientbibliotek är klustermedvetna och hanterar omdirigeringar automatiskt.
- Det erbjuder feltålighet genom att befordra repliker när en master slutar fungera.
- Möjligheten att utföra resharding möjliggör dynamisk skalning.
Redis Cluster är det självklara valet när en enda Redis-instans inte längre kan uppfylla programmets krav på datamängd eller genomströmning.
Lär dig Redis: cachelagring och meddelanden (Pub/Sub, Streams) med en AI-lärare – gratis
Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.
- Kurser
- 12
- Lektioner
- 48
Vanliga frågor
Är lektionen ”Redis Cluster för sharding” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Redis: cachelagring och meddelanden (Pub/Sub, Streams), inklusive ”Redis Cluster för sharding”, kostnadsfritt i sin helhet här på webben. Därefter låser CoddyKit PRO upp alla lektioner, plus interaktiv övning med en inbyggd kodredigerare och en AI-lärare dygnet runt. Kursen i Redis: cachelagring och meddelanden (Pub/Sub, Streams) innehåller totalt 4 lektioner.
Vad lär jag mig i ”Redis Cluster för sharding”?
Implementera Redis Cluster för att dela upp data över flera noder och uppnå horisontell skalning samt feltålighet. Ni övar på Redis: cachelagring och meddelanden (Pub/Sub, Streams) med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.
Behöver jag någon erfarenhet för att börja lära mig Redis: cachelagring och meddelanden (Pub/Sub, Streams)?
Du behöver inga förkunskaper. Utbildningen i Redis: cachelagring och meddelanden (Pub/Sub, Streams) på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.
Hur lång tid tar lektionen ”Redis Cluster för sharding”?
De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.
Kan jag skriva och köra kod i den här Redis: cachelagring och meddelanden (Pub/Sub, Streams)-lektionen?
Ja. Varje Redis: cachelagring och meddelanden (Pub/Sub, Streams)-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.
Alla lektioner i den här kursen
- Redis-replikering för redundans
- Redis Sentinel för hög tillgänglighet
- Redis Cluster för sharding
- Klientsidig anslutningsresiliens