Vad är Redis Streams?
Förstå arkitekturen och fördelarna med Redis Streams som en kraftfull och beständig meddelandekö.
Vad är Redis Streams? är en gratis lektion i Redis: cachelagring och meddelanden (Pub/Sub, Streams) på CoddyKit. Detta är lektion 1 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.
Vad är Redis Streams?
Välkommen! I den här lektionen går vi igenom Redis Streams, en kraftfull datastruktur för att hantera händelsedata i realtid.
Tänk på en ström som en logg med meddelanden där nya poster bara läggs till, ungefär som en traditionell meddelandekö eller ett Kafka-ämne, men inbyggd direkt i Redis.
Strömmar passar perfekt för att bygga händelsestyrda arkitekturer, bearbeta sensordata eller spåra användaraktivitet.
Strömmar jämfört med Pub/Sub
Redis har redan Pub/Sub, så varför använda strömmar?
- Beständighet: Meddelanden i strömmar lagras och går inte förlorade om konsumenter är offline. Pub/Sub-meddelanden skickas och glöms bort.
- Konsumentgrupper: Strömmar stöder konsumentgrupper för samordnad meddelandebearbetning, vilket gör att flera applikationer kan läsa samma ström utan att duplicera arbetet.
- Meddelandehistorik: Du kan läsa meddelanden från valfri punkt i strömmens historik.
Strömmar erbjuder beständighet och avancerade konsumtionsmönster som Pub/Sub saknar.
Strömarkitektur: Poster och ID:n
En Redis-ström är en ordnad sekvens av poster. Varje post består av:
- Ett unikt ström-ID: Detta är ett tidsstämpelbaserat ID (t.ex.
1678886400000-0) som säkerställer att meddelanden är strikt ordnade. - Ett eller flera fält-värde-par: Detta är meddelandets faktiska data, ungefär som en liten Redis Hash.
Tänk på det som en logg där varje rad har en unik tidsstämpel och viss nyckel-värde-data.
Lägga till poster med XADD
Producenter lägger till nya poster i en ström med kommandot XADD. Redis genererar automatiskt ett unikt ID för varje ny post, men du kan också ange ett själv.
Jokertecknet * talar om för Redis att generera ett nytt, unikt ID för posten.
Prova att köra det här exemplet:
public class Main {
public static void main(String[] args) {
System.out.println("Simulating Redis XADD command:");
String streamName = "sensor_data";
// XADD sensor_data * temp 25 hum 60
System.out.println("redisClient.xadd(");
System.out.println(" \"" + streamName + "\", \"*\",");
System.out.println(" \"temp\", \"25\", \"hum\", \"60\"");
System.out.println(");");
System.out.println("\nOutput (example ID): 1678886400000-0");
}
}Förstå ström-ID:n
Stream-ID:n består av två delar: <milliseconds-timestamp>-<sequence-number>.
- Tidsstämpeln är tiden då posten lades till (i Unix-millisekunder).
- Sekvensnumret ökas om flera poster läggs till inom samma millisekund.
Den här strukturen garanterar att ID:n alltid ökar, vilket ger meddelanden en naturlig ordning. Ni kan använda 0-0 för att hänvisa till början av en stream.
Läsa från en stream med XREAD
Konsumenter använder kommandot XREAD för att hämta poster från en eller flera streams. Ni anger streamens namn och det ID där läsningen ska börja.
Med XREAD kan ni hämta en grupp meddelanden, vilket gör det effektivt för konsumenter.
Prova att köra det här exemplet:
public class Main {
public static void main(String[] args) {
System.out.println("Simulating Redis XREAD command:");
String streamName = "sensor_data";
String startId = "0-0"; // Read from the beginning
// XREAD STREAMS sensor_data 0-0
System.out.println("List<Map<String, String>> entries =");
System.out.println(" redisClient.xread("STREAMS",");
System.out.println(" \"" + streamName + "\", \"" + startId + "\"");
System.out.println(");");
System.out.println("\nExample Output:");
System.out.println("ID: 1678886400000-0, {temp=25, hum=60}");
System.out.println("ID: 1678886400001-0, {temp=26, hum=61}");
}
}Blockerande läsning i realtid
För att läsa nya meddelanden när de anländer kan ni använda alternativet BLOCK med XREAD. Då väntar kommandot på nya data om inga nya poster är tillgängliga.
Ni kan även ange en tidsgräns för den blockerande åtgärden. Det är avgörande när ni bygger realtidsapplikationer som reagerar direkt på händelser.
Exempel: XREAD BLOCK 0 STREAMS mystream $ ($ betyder ”det senaste ID:t i streamen”).
Persistens och historik i streams
Till skillnad från Pub/Sub är Redis Streams beständiga. Meddelanden som läggs till i en stream finns kvar tills de uttryckligen tas bort eller kapas.
Det gör att nya konsumenter kan läsa hela händelsehistoriken från början eller komma ikapp från en viss punkt om de tillfälligt varit offline.
Den här persistensen är en viktig funktion för tillförlitlig händelseloggning och återuppspelning.
Sorterade och oföränderliga poster
Redis Streams garanterar att poster alltid läggs till i den ordning de tas emot och tilldelas strikt ökande ID:n.
När en post har lagts till i en stream kan den inte ändras. Denna oföränderlighet är grundläggande för att upprätthålla en korrekt och granskningsbar händelselogg.
Dessa egenskaper gör Streams utmärkta för event sourcing och för att säkerställa datakonsistens.
Testa din förståelse
Vilka av följande är viktiga fördelar med eller egenskaper hos Redis Streams?
Sammanfattning: Vad är Redis Streams?
I den här lektionen lärde vi oss att Redis Streams är en kraftfull, beständig datastruktur för loggar där poster endast läggs till.
- De erbjuder persistens, ordnad leverans och stöd för konsumentgrupper, vilket skiljer dem från Pub/Sub.
- Vi gick igenom hur poster läggs till med
XADDoch läses medXREAD. - Streams passar utmärkt för event sourcing, realtidsbearbetning av data och tillförlitliga meddelandeköer.
Härnäst går vi djupare in på Streams-kommandon och funktioner!
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 ”Vad är Redis Streams?” gratis?
Ja – du kan läsa vilka 3 lektioner som helst i lärvägen Redis: cachelagring och meddelanden (Pub/Sub, Streams), inklusive ”Vad är Redis Streams?”, 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 ”Vad är Redis Streams?”?
Förstå arkitekturen och fördelarna med Redis Streams som en kraftfull och beständig meddelandekö. 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 1 av 4.
Hur lång tid tar lektionen ”Vad är Redis Streams?”?
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
- Vad är Redis Streams?
- Datastrukturer och kommandon för strömmar
- Beständighet för meddelanden i strömmar
- Begränsa och trimma strömmar