Strategier for mellomlagring: Redis + CDN + edge computing · leksjon

Redis Pub/Sub for ugyldiggjøring

Utforsk hvordan Redis Publish/Subscribe kan brukes til ugyldiggjøring av hurtigbuffer i sanntid på tvers av flere applikasjonsinstanser.

Leksjon 3 av 412 trinn

Redis Pub/Sub for ugyldiggjøring er en gratis leksjon i Strategier for mellomlagring: Redis + CDN + edge computing på CoddyKit. Dette er leksjon 3 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Strategier for mellomlagring: Redis + CDN + edge computing, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Strategier for mellomlagring: Redis + CDN + edge computing inneholder totalt 4 leksjoner.

Hurtigbufferoppdateringer i sanntid

Se for deg at du har flere kopier av applikasjonen din som kjører, og at alle bruker et lokalt hurtigbuffer. Når data endres i databasen, hvordan forteller du alle disse applikasjonsinstansene at hurtigbufferne skal oppdateres umiddelbart?

Redis Publish/Subscribe (Pub/Sub) er et kraftig meldingsmønster som lar deg sende sanntidsvarsler til flere klienter, noe som gjør det perfekt for distribuert ugyldiggjøring av hurtigbuffer.

Utover Time-To-Live (TTL)

Selv om Time-To-Live (TTL) er nyttig for automatisk utløping av gamle data, garanterer det ikke umiddelbar oppdatering. Hvis kritiske data endres, ønsker du ikke å vente på at TTL-en skal utløpe.

Pub/Sub gjør det mulig å tvinge frem umiddelbar ugyldiggjøring. Når data oppdateres i det primære datalageret (for eksempel en database), kan én applikasjonsinstans kringkaste en melding, og alle andre instanser som lytter, mottar den og ugyldiggjør sine bestemte hurtigbufferoppføringer.

Utgiverrollen

I Pub/Sub-modellen er en utgiver en enhet (for eksempel én av applikasjonsinstansene dine) som sender meldinger til en bestemt kanal.

  • Når det skjer en viktig dataendring (for eksempel at prisen på et produkt oppdateres i databasen), fungerer applikasjonsinstansen som utførte endringen som utgiver.
  • Den bryr seg ikke om hvem som mottar meldingen, bare at den sendes til den angitte kanalen.

Abonnentrollen

En abonnent er en enhet (en annen applikasjonsinstans) som lytter etter meldinger på én eller flere bestemte kanaler.

  • Alle andre applikasjonsinstanser abonnerer på kanalen 'cache-invalidation'.
  • Når en melding kommer på en kanal de abonnerer på, mottar de den og kan reagere, for eksempel ved å fjerne det tilsvarende elementet fra det lokale hurtigbufferet.

Redis Pub/Sub-kommandoer

Redis tilbyr to hovedkommandoer for Pub/Sub:

  • PUBLISH channel message: Sender message til den angitte channel. Alle abonnenter på kanalen mottar den.
  • SUBSCRIBE channel [channel ...]: Denne klienten abonnerer på én eller flere kanaler. Etter abonnementet lytter den kontinuerlig etter meldinger.

Husk at Pub/Sub-meldinger sendes uten bekreftelse; Redis lagrer dem ikke.

Publisere en ugyldiggjøring av hurtigbuffer

Slik kan en applikasjonsinstans publisere en ugyldiggjøringsmelding ved hjelp av Java og Jedis-klienten. Dette eksempelet sender en melding for å ugyldiggjøre et bestemt produkt.

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();
  }
}

Sette opp en abonnent for hurtigbuffer

Abonnenter bruker en egen lytterklasse til å håndtere innkommende meldinger. Metoden onMessage er stedet der logikken for ugyldiggjøring skal legges.

Merk: Kallet jedis.subscribe() er blokkerende og holder tilkoblingen åpen for lytting. I en ekte applikasjon kjører dette i en dedikert tråd.

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.");
  }
}

Ugyldiggjøringsflyten fra ende til ende

La oss se på hele forløpet:

  1. App A oppdaterer et produkt i databasen.
  2. App A publiserer en ugyldiggjøringsmelding ('invalidate:product:456') til kanalen 'product-updates' i Redis.
  3. Redis mottar meldingen og kringkaster den til alle klienter som abonnerer på 'product-updates'.
  4. App B, App C (og App A selv hvis den abonnerer) mottar meldingen.
  5. Abonnentlogikken i hver app fjerner 'product:456' fra det lokale hurtigbufferet, slik at neste forespørsel får oppdaterte data.

Utforme ugyldiggjøringsmeldinger

Hva bør du ta med i ugyldiggjøringsmeldingen?

  • Bestemt nøkkel: 'invalidate:user:123' er ideell for presis ugyldiggjøring.
  • Kategori: 'invalidate:all:products' for bredere ugyldiggjøring (bruk med forsiktighet).
  • Tidsstempel/versjon: Kan hjelpe abonnenter med å avgjøre om de bufrede dataene er eldre enn oppdateringen.

Hold meldingene korte. Abonnentene bør ha nok informasjon til å vite hva som skal ugyldiggjøres.

Fordeler og ulemper ved Pub/Sub

Fordeler:

  • Sanntid: Umiddelbare hurtigbufferoppdateringer på tvers av instanser.
  • Løst koblet: Utgivere trenger ikke å kjenne til abonnentene.
  • Skalerbart: Redis håndterer meldingsdistribusjon effektivt.

Vurderinger:

  • Ingen vedvarende lagring: Hvis en abonnent er frakoblet, går meldingene tapt.
  • Maksimalt én gang: Redis Pub/Sub garanterer ikke levering. For kritiske systemer bør du vurdere andre meldingsmønstre eller en kombinasjon.

Quiz om Pub/Sub-ugyldiggjøring

Du har lært hvordan Redis Pub/Sub bidrar til sanntidsugyldiggjøring av hurtigbuffer. La oss teste forståelsen din!

Pub/Sub for oppdaterte data

Godt jobbet! Du har utforsket hvordan Redis Publish/Subscribe er et viktig verktøy for å holde data oppdatert i distribuerte hurtigbufferløsninger.

  • Pub/Sub muliggjør sanntidskringkasting av ugyldiggjøringsmeldinger.
  • Utgivere sender meldinger, og abonnenter lytter på kanaler.
  • Dette mønsteret muliggjør umiddelbare hurtigbufferoppdateringer i alle applikasjonsinstanser når data endres, noe som forbedrer konsistensen og brukeropplevelsen.
  • Husk at løsningen er kraftig, men at den har en «send og glem»-måte å fungere på. Vurder behovet for vedvarende lagring i kritiske systemer.
Gratis å komme i gang

Lær deg Strategier for mellomlagring: Redis + CDN + edge computing med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
12
Leksjoner
48

Ofte stilte spørsmål

Er leksjonen «Redis Pub/Sub for ugyldiggjøring» gratis?

Ja – hele teksten i «Redis Pub/Sub for ugyldiggjøring» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Strategier for mellomlagring: Redis + CDN + edge computing-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Strategier for mellomlagring: Redis + CDN + edge computing inneholder totalt 4 leksjoner.

Hva lærer jeg i «Redis Pub/Sub for ugyldiggjøring»?

Utforsk hvordan Redis Publish/Subscribe kan brukes til ugyldiggjøring av hurtigbuffer i sanntid på tvers av flere applikasjonsinstanser. Du øver på Strategier for mellomlagring: Redis + CDN + edge computing med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Strategier for mellomlagring: Redis + CDN + edge computing?

Ingen tidligere erfaring er nødvendig. Strategier for mellomlagring: Redis + CDN + edge computing på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 3 av 4.

Hvor lang tid tar leksjonen «Redis Pub/Sub for ugyldiggjøring»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Strategier for mellomlagring: Redis + CDN + edge computing-leksjonen?

Ja. Alle Strategier for mellomlagring: Redis + CDN + edge computing-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Redis-bestandighet og høy tilgjengelighet
  2. Distribuert hurtigbufring med Redis
  3. Redis Pub/Sub for ugyldiggjøring
  4. Redis Cluster og sharding
← Tilbake til Strategier for mellomlagring: Redis + CDN + edge computing