Redis Pub/Sub voor invalidatie
Ontdek hoe u Redis Publish/Subscribe gebruikt voor realtime cache-invalidatie over meerdere applicatie-instanties.
Redis Pub/Sub voor invalidatie is een gratis Cachingstrategieën: Redis + CDN + edgecomputing-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Cachingstrategieën: Redis + CDN + edgecomputing. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Cachingstrategieën: Redis + CDN + edgecomputing bevat in totaal 4 lessen.
Cache in realtime bijwerken
Stel je voor dat je meerdere exemplaren van je toepassing hebt draaien, die allemaal een lokale cache gebruiken. Als gegevens in de database veranderen, hoe zorg je er dan voor dat alle exemplaren van je toepassing hun caches direct bijwerken?
Redis Publish/Subscribe (Pub/Sub) is een krachtig berichtenpatroon waarmee je realtime meldingen naar meerdere clients kunt sturen. Daardoor is het ideaal voor het ongeldig maken van caches in een gedistribueerde omgeving.
Verder dan Time-To-Live (TTL)
Time-To-Live (TTL) is handig om oude gegevens automatisch te laten verlopen, maar garandeert geen directe actualiteit. Als kritieke gegevens veranderen, wil je niet wachten tot de TTL verloopt.
Met Pub/Sub kun je onmiddellijk ongeldig maken afdwingen. Wanneer gegevens in je primaire gegevensopslag (zoals een database) worden bijgewerkt, kan één exemplaar van de toepassing een bericht uitzenden. Alle andere exemplaren die luisteren ontvangen het bericht en maken hun specifieke cache-items ongeldig.
De rol van de publisher
In het Pub/Sub-model is een Publisher een entiteit (zoals een van je toepassingsexemplaren) die berichten naar een specifiek kanaal stuurt.
- Wanneer er een belangrijke wijziging in de gegevens plaatsvindt (bijvoorbeeld wanneer de prijs van een product in de database wordt bijgewerkt), fungeert het toepassingsexemplaar dat de wijziging heeft aangebracht als publisher.
- De publisher hoeft niet te weten wie het bericht ontvangt, alleen dat het naar het aangewezen kanaal wordt gestuurd.
De rol van de subscriber
Een Subscriber is een entiteit (een ander toepassingsexemplaar) die luistert naar berichten op een of meer specifieke kanalen.
- Alle andere toepassingsexemplaren zouden subscribers zijn van het kanaal 'cache-invalidation'.
- Wanneer er een bericht binnenkomt op een kanaal waarop ze zijn geabonneerd, ontvangen ze het en kunnen ze reageren, bijvoorbeeld door het bijbehorende item uit hun lokale cache te verwijderen.
Redis Pub/Sub-opdrachten
Redis biedt twee hoofdopdrachten voor Pub/Sub:
PUBLISH channel message: stuurtmessagenaar het opgegevenchannel. Alle subscribers van dat kanaal ontvangen het.SUBSCRIBE channel [channel ...]: deze client abonneert zich op een of meer kanalen. Na het abonneren blijft de client continu naar berichten luisteren.
Onthoud dat Pub/Sub-berichten eenmalig worden verzonden: Redis slaat ze niet op.
Een cache-ongeldigmaking publiceren
Zo kan een toepassingsexemplaar met Java en de Jedis-client een bericht voor ongeldigmaking publiceren. Dit voorbeeld stuurt een bericht om een specifiek product ongeldig te maken.
import redis.clients.jedis.Jedis;
public class CachePublisher {
public static void main(String[] args) {
// Connect to Redis (default localhost:6379)
Jedis jedis = new Jedis("localhost", 6379);
String channel = "product-updates";
String message = "invalidate:product:456"; // Key to invalidate
// Publish the message
jedis.publish(channel, message);
System.out.println("Published: '" + message + "' to channel '" + channel + "'");
// Close the connection
jedis.close();
}
}Een cachesubscriber instellen
Subscribers gebruiken een speciale listenerklasse om inkomende berichten te verwerken. In de methode onMessage komt je logica voor ongeldigmaking.
Let op: de aanroep jedis.subscribe() blokkeert en houdt de verbinding open om te luisteren. In een echte toepassing wordt dit in een speciale thread uitgevoerd.
import redis.clients.jedis.Jedis;
import redis.clients.jedis.JedisPubSub;
public class CacheSubscriberSetup {
public static void main(String[] args) {
System.out.println("Preparing Redis Pub/Sub subscriber...");
// Define your listener logic
JedisPubSub listener = new JedisPubSub() {
@Override
public void onMessage(String channel, String message) {
System.out.println("Received: '" + message + "' on channel '" + channel + "'");
// Here, you would implement your cache invalidation logic
// e.g., myLocalCache.remove(message.split(":")[1]);
}
@Override
public void onSubscribe(String channel, int subscribedChannels) {
System.out.println("Successfully subscribed to: " + channel);
}
// Other methods like onUnsubscribe, onPMessage, etc., can be overridden
};
// In a real application, you'd run:
// try (Jedis jedis = new Jedis("localhost", 6379)) {
// jedis.subscribe(listener, "product-updates"); // This blocks!
// }
System.out.println("Subscriber listener defined. To truly listen, run a blocking subscribe call.");
System.out.println("This runnable example exits to demonstrate setup.");
}
}De volledige stroom van ongeldigmaking
Laten we het volledige proces bekijken:
- App A werkt een product bij in de database.
- App A publiceert een bericht voor ongeldigmaking ('invalidate:product:456') naar het kanaal 'product-updates' in Redis.
- Redis ontvangt het bericht en zendt het uit naar alle clients die op 'product-updates' zijn geabonneerd.
- App B, App C (en App A zelf als die is geabonneerd) ontvangen het bericht.
- De subscriberlogica van elke app verwijdert 'product:456' uit de lokale cache, zodat bij de volgende aanvraag actuele gegevens worden gebruikt.
Berichten voor ongeldigmaking ontwerpen
Wat moet je opnemen in je bericht voor ongeldigmaking?
- Specifieke sleutel: 'invalidate:user:123' is ideaal voor nauwkeurige ongeldigmaking.
- Categorie: 'invalidate:all:products' voor bredere ongeldigmaking (wees hier voorzichtig mee).
- Tijdstempel/versie: kan subscribers helpen bepalen of hun gegevens in de cache ouder zijn dan de update.
Houd berichten beknopt. Subscribers moeten genoeg informatie hebben om te weten wat ze ongeldig moeten maken.
Voor- en nadelen van Pub/Sub
Voordelen:
- Realtime: directe cache-updates voor alle instanties.
- Los gekoppeld: publishers hoeven niets over subscribers te weten.
- Schaalbaar: Redis distribueert berichten efficiënt.
Aandachtspunten:
- Geen persistentie: als een subscriber offline is, mist die berichten.
- Hoogstens één keer: Redis Pub/Sub garandeert geen bezorging. Overweeg voor kritieke systemen andere berichtenpatronen of een combinatie daarvan.
Quiz over Pub/Sub-ongeldigmaking
Je hebt geleerd hoe Redis Pub/Sub helpt bij het in realtime ongeldig maken van caches. Test nu je begrip!
Pub/Sub voor actuele gegevens
Goed gedaan! Je hebt onderzocht hoe Redis Publish/Subscribe een belangrijk hulpmiddel is om gegevens actueel te houden in omgevingen met gedistribueerde caching.
- Met Pub/Sub kun je berichten voor ongeldigmaking in realtime uitzenden.
- Publishers sturen berichten en subscribers luisteren naar kanalen.
- Met dit patroon kunnen alle toepassingsexemplaren hun caches direct bijwerken wanneer gegevens veranderen, wat de consistentie en gebruikerservaring verbetert.
- Onthoud dat Pub/Sub krachtig is, maar werkt volgens het principe van eenmalig verzenden. Houd voor kritieke systemen rekening met de behoefte aan persistentie.
Leer Cachingstrategieën: Redis + CDN + edgecomputing met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 12
- Lessen
- 48
Veelgestelde vragen
Is de les “Redis Pub/Sub voor invalidatie” gratis?
Ja — de volledige tekst van “Redis Pub/Sub voor invalidatie” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Cachingstrategieën: Redis + CDN + edgecomputing wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Cachingstrategieën: Redis + CDN + edgecomputing bevat in totaal 4 lessen.
Wat leer ik in “Redis Pub/Sub voor invalidatie”?
Ontdek hoe u Redis Publish/Subscribe gebruikt voor realtime cache-invalidatie over meerdere applicatie-instanties. Je oefent met Cachingstrategieën: Redis + CDN + edgecomputing door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Cachingstrategieën: Redis + CDN + edgecomputing te beginnen?
Ervaring vooraf is niet nodig. Cachingstrategieën: Redis + CDN + edgecomputing op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Redis Pub/Sub voor invalidatie”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Cachingstrategieën: Redis + CDN + edgecomputing?
Ja. Elke les over Cachingstrategieën: Redis + CDN + edgecomputing bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- Redis-persistentie en hoge beschikbaarheid
- Gedistribueerde caching met Redis
- Redis Pub/Sub voor invalidatie
- Redis Cluster en sharding